Files
libreoffice/sw/source/core/doc/docdraw.cxx

995 lines
36 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
re-base on ALv2 code. Includes: Patches contributed by Oliver-Rainer Wittmann sw34bf06: #i117783# - Writer's implementation of XPagePrintable - apply print settings to new printing routines http://svn.apache.org/viewvc?view=revision&revision=1172115 sw34bf06: #o12311627# use <rtl_random> methods to create unique ids for list styles and list ids http://svn.apache.org/viewvc?view=revision&revision=1172112 sw34bf06 #i114725#,#i115828# - method <SwDoc::ClearDoc()> - clear list structures completely http://svn.apache.org/viewvc?view=revision&revision=1172122 i#118572 - remove ui string and help content regarding usage of Java Mail in Writer's Mail Merge as Java Mail is not used. http://svn.apache.org/viewvc?view=revision&revision=1197035 Patches contributed by Mathias Bauer cws mba34issues01: #i117718#: provide filter name in case storage of medium does not allow to detect one http://svn.apache.org/viewvc?view=revision&revision=1172350 cws mba34issues01: #i117721#: directly provide parameters retrieved from SfxMedium http://svn.apache.org/viewvc?view=revision&revision=1172353 gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 http://svn.apache.org/viewvc?view=revision&revision=1396797 http://svn.apache.org/viewvc?view=revision&revision=1397315 cws mba34issues01: #i117723#: convert assertion into trace http://svn.apache.org/viewvc?view=revision&revision=1172355 cws mba34issues01: #i117699#: keep layout alive until swdoc dies http://svn.apache.org/viewvc?view=revision&revision=1172362 cws mba34issues01: #i117943#: missing color attributes in RTF clipboard http://svn.apache.org/viewvc?view=revision&revision=1172363 Patch contributed by Henning Brinkmann imported patch i#103878 http://svn.apache.org/viewvc?view=revision&revision=1172109 Patches contributed by Michael Stahl sw34bf06: #i117955#: WW8 export: disable storing of section breaks in endnotes http://svn.apache.org/viewvc?view=revision&revision=1172119 Patch contributed by imacat Fixed the Asian language work count. http://svn.apache.org/viewvc?view=revision&revision=1241345 Patch contributed by Pedro Giffuni i#20878 - Add comment with BZ issue for reference. http://svn.apache.org/viewvc?view=revision&revision=1244517 Patch contributed by Andre Fischer Do not add targets for junit tests when junit is disabled. http://svn.apache.org/viewvc?view=revision&revision=1241508 add writerperfect dependency.
2011-03-31 10:05:04 +02:00
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
2000-09-18 23:08:29 +00:00
#include <hintids.hxx>
2001-07-23 16:20:51 +00:00
#include <rtl/logfile.hxx>
2000-09-18 23:08:29 +00:00
#include <vcl/outdev.hxx>
#include <sfx2/printer.hxx>
#include <editeng/eeitem.hxx>
#include <editeng/flditem.hxx>
#include <editeng/editeng.hxx>
2000-09-18 23:08:29 +00:00
#include <svx/svdoutl.hxx>
#include <editeng/colritem.hxx>
2000-09-18 23:08:29 +00:00
#include <svx/svdpage.hxx>
#include <svx/svdogrp.hxx>
#include <editeng/langitem.hxx>
#include <editeng/unolingu.hxx>
#include <editeng/measfld.hxx>
2000-09-18 23:08:29 +00:00
#include <svx/svdpool.hxx>
#include <fmtanchr.hxx>
#include <charatr.hxx>
#include <frmfmt.hxx>
#include <charfmt.hxx>
#include <viewimp.hxx>
#include <swhints.hxx>
#include <doc.hxx>
#include <IDocumentUndoRedo.hxx>
2000-09-18 23:08:29 +00:00
#include <docsh.hxx>
#include <rootfrm.hxx> // So that the RootDtor is called.
2000-09-18 23:08:29 +00:00
#include <poolfmt.hxx>
#include <viewsh.hxx> // for MakeDrawView
2000-09-18 23:08:29 +00:00
#include <drawdoc.hxx>
#include <UndoDraw.hxx>
#include <swundo.hxx> // for the UndoIds
2000-09-18 23:08:29 +00:00
#include <dcontact.hxx>
#include <dview.hxx>
#include <mvsave.hxx>
#include <flyfrm.hxx>
#include <dflyobj.hxx>
#include <svx/svdetc.hxx>
#include <editeng/fhgtitem.hxx>
#include <svx/svdpagv.hxx>
#include <txtfrm.hxx>
#include <editeng/frmdiritem.hxx>
#include <fmtornt.hxx>
#include <svx/svditer.hxx>
2010-10-18 12:55:43 +01:00
#include <vector>
#include <switerator.hxx>
2000-09-18 23:08:29 +00:00
using namespace ::com::sun::star;
2000-10-27 10:55:57 +00:00
using namespace ::com::sun::star::linguistic2;
2000-09-18 23:08:29 +00:00
/** local method to determine positioning and alignment attributes for a drawing
* object, which is newly connected to the layout.
*
* Used for a newly formed group object <SwDoc::GroupSelection(..)>
* and the members of a destroyed group <SwDoc::UnGroupSelection(..)>
*/
static void lcl_AdjustPositioningAttr( SwDrawFrmFmt* _pFrmFmt,
const SdrObject& _rSdrObj )
{
const SwContact* pContact = GetUserCall( &_rSdrObj );
OSL_ENSURE( pContact, "<lcl_AdjustPositioningAttr(..)> - missing contact object." );
// determine position of new group object relative to its anchor frame position
SwTwips nHoriRelPos = 0;
SwTwips nVertRelPos = 0;
{
const SwFrm* pAnchorFrm = pContact->GetAnchoredObj( &_rSdrObj )->GetAnchorFrm();
OSL_ENSURE( !pAnchorFrm ||
!pAnchorFrm->IsTxtFrm() ||
!static_cast<const SwTxtFrm*>(pAnchorFrm)->IsFollow(),
"<lcl_AdjustPositioningAttr(..)> - anchor frame is a follow. Please inform OD." );
bool bVert = false;
bool bR2L = false;
2011-01-28 11:31:24 +00:00
// #i45952# - use anchor position of anchor frame, if it exist.
Point aAnchorPos;
if ( pAnchorFrm )
{
2011-01-28 11:31:24 +00:00
// #i45952#
aAnchorPos = pAnchorFrm->GetFrmAnchorPos( ::HasWrap( &_rSdrObj ) );
bVert = pAnchorFrm->IsVertical();
bR2L = pAnchorFrm->IsRightToLeft();
}
else
{
2011-01-28 11:31:24 +00:00
// #i45952#
aAnchorPos = _rSdrObj.GetAnchorPos();
// If no anchor frame exist - e.g. because no layout exists - the
// default layout direction is taken.
const SvxFrameDirectionItem* pDirItem =
static_cast<const SvxFrameDirectionItem*>(&(_pFrmFmt->GetAttrSet().GetPool()->GetDefaultItem( RES_FRAMEDIR )));
switch ( pDirItem->GetValue() )
{
case FRMDIR_VERT_TOP_LEFT:
{
2009-03-04 16:19:59 +00:00
// vertical from left-to-right - Badaa: supported now!
bVert = true;
bR2L = true;
OSL_FAIL( "<lcl_AdjustPositioningAttr(..)> - vertical from left-to-right not supported." );
}
break;
case FRMDIR_VERT_TOP_RIGHT:
{
// vertical from right-to-left
bVert = true;
bR2L = false;
}
break;
case FRMDIR_HORI_RIGHT_TOP:
{
// horizontal from right-to-left
bVert = false;
bR2L = true;
}
break;
case FRMDIR_HORI_LEFT_TOP:
{
// horizontal from left-to-right
bVert = false;
bR2L = false;
}
break;
}
}
// use geometry of drawing object
const SwRect aObjRect = _rSdrObj.GetSnapRect();
2009-03-04 16:19:59 +00:00
if ( bVert )
{
2009-03-04 16:19:59 +00:00
if ( bR2L ) {
//FRMDIR_VERT_TOP_LEFT
nHoriRelPos = aObjRect.Left() - aAnchorPos.X();
nVertRelPos = aObjRect.Top() - aAnchorPos.Y();
2009-03-04 16:19:59 +00:00
} else {
//FRMDIR_VERT_TOP_RIGHT
nHoriRelPos = aObjRect.Top() - aAnchorPos.Y();
nVertRelPos = aAnchorPos.X() - aObjRect.Right();
2009-03-04 16:19:59 +00:00
}
}
else if ( bR2L )
{
nHoriRelPos = aAnchorPos.X() - aObjRect.Right();
nVertRelPos = aObjRect.Top() - aAnchorPos.Y();
}
else
{
nHoriRelPos = aObjRect.Left() - aAnchorPos.X();
nVertRelPos = aObjRect.Top() - aAnchorPos.Y();
}
2009-03-04 16:19:59 +00:00
//End of SCMS
}
_pFrmFmt->SetFmtAttr( SwFmtHoriOrient( nHoriRelPos, text::HoriOrientation::NONE, text::RelOrientation::FRAME ) );
_pFrmFmt->SetFmtAttr( SwFmtVertOrient( nVertRelPos, text::VertOrientation::NONE, text::RelOrientation::FRAME ) );
2011-01-28 11:31:24 +00:00
// #i44334#, #i44681# - positioning attributes already set
_pFrmFmt->PosAttrSet();
2011-01-28 11:31:24 +00:00
// #i34750# - keep current object rectangle for drawing
// objects. The object rectangle is used on events from the drawing layer
// to adjust the positioning attributes - see <SwDrawContact::_Changed(..)>.
{
const SwAnchoredObject* pAnchoredObj = pContact->GetAnchoredObj( &_rSdrObj );
if ( pAnchoredObj->ISA(SwAnchoredDrawObject) )
{
const SwAnchoredDrawObject* pAnchoredDrawObj =
static_cast<const SwAnchoredDrawObject*>(pAnchoredObj);
const SwRect aObjRect = _rSdrObj.GetSnapRect();
const_cast<SwAnchoredDrawObject*>(pAnchoredDrawObj)
->SetLastObjRect( aObjRect.SVRect() );
}
}
}
2000-09-18 23:08:29 +00:00
SwDrawContact* SwDoc::GroupSelection( SdrView& rDrawView )
{
2011-01-28 11:31:24 +00:00
// replace marked 'virtual' drawing objects by the corresponding 'master'
// drawing objects.
SwDrawView::ReplaceMarkedDrawVirtObjs( rDrawView );
const SdrMarkList &rMrkList = rDrawView.GetMarkedObjectList();
SwDrawFrmFmt *pFmt = 0L;
SdrObject *pObj = rMrkList.GetMark( 0 )->GetMarkedSdrObj();
bool bNoGroup = ( 0 == pObj->GetUpGroup() );
SwDrawContact* pNewContact = 0;
2000-09-18 23:08:29 +00:00
if( bNoGroup )
{
// Revoke anchor attribute.
SwDrawContact *pMyContact = (SwDrawContact*)GetUserCall(pObj);
const SwFmtAnchor aAnch( pMyContact->GetFmt()->GetAnchor() );
2000-09-18 23:08:29 +00:00
SwUndoDrawGroup *const pUndo = (!GetIDocumentUndoRedo().DoesUndo())
? 0
: new SwUndoDrawGroup( (sal_uInt16)rMrkList.GetMarkCount() );
2000-09-18 23:08:29 +00:00
2011-01-28 11:31:24 +00:00
// #i53320#
bool bGroupMembersNotPositioned( false );
{
SwAnchoredDrawObject* pAnchoredDrawObj =
static_cast<SwAnchoredDrawObject*>(pMyContact->GetAnchoredObj( pObj ));
bGroupMembersNotPositioned = pAnchoredDrawObj->NotYetPositioned();
}
// Destroy ContactObjects and formats.
for( sal_uInt16 i = 0; i < rMrkList.GetMarkCount(); ++i )
2000-09-18 23:08:29 +00:00
{
pObj = rMrkList.GetMark( i )->GetMarkedSdrObj();
2000-09-18 23:08:29 +00:00
SwDrawContact *pContact = (SwDrawContact*)GetUserCall(pObj);
2011-01-28 11:31:24 +00:00
// #i53320#
#if OSL_DEBUG_LEVEL > 0
SwAnchoredDrawObject* pAnchoredDrawObj =
static_cast<SwAnchoredDrawObject*>(pContact->GetAnchoredObj( pObj ));
OSL_ENSURE( bGroupMembersNotPositioned == pAnchoredDrawObj->NotYetPositioned(),
"<SwDoc::GroupSelection(..)> - group members have different positioning status!" );
#endif
2000-09-18 23:08:29 +00:00
pFmt = (SwDrawFrmFmt*)pContact->GetFmt();
// Deletes itself!
pContact->Changed(*pObj, SDRUSERCALL_DELETE, pObj->GetLastBoundRect() );
2000-09-18 23:08:29 +00:00
pObj->SetUserCall( 0 );
if( pUndo )
pUndo->AddObj( i, pFmt, pObj );
else
DelFrmFmt( pFmt );
2011-01-28 11:31:24 +00:00
// #i45952# - re-introduce position normalization of group member
// objects, because its anchor position is cleared, when they are
// grouped.
Point aAnchorPos( pObj->GetAnchorPos() );
pObj->NbcSetAnchorPos( Point( 0, 0 ) );
pObj->NbcMove( Size( aAnchorPos.X(), aAnchorPos.Y() ) );
2000-09-18 23:08:29 +00:00
}
pFmt = MakeDrawFrmFmt( OUString("DrawObject"),
2000-09-18 23:08:29 +00:00
GetDfltFrmFmt() );
pFmt->SetFmtAttr( aAnch );
2011-01-28 11:31:24 +00:00
// #i36010# - set layout direction of the position
pFmt->SetPositionLayoutDir(
text::PositionLayoutDir::PositionInLayoutDirOfAnchor );
2000-09-18 23:08:29 +00:00
rDrawView.GroupMarked();
OSL_ENSURE( rMrkList.GetMarkCount() == 1, "GroupMarked more or none groups." );
SdrObject* pNewGroupObj = rMrkList.GetMark( 0 )->GetMarkedSdrObj();
pNewContact = new SwDrawContact( pFmt, pNewGroupObj );
2011-01-28 11:31:24 +00:00
// #i35635#
pNewContact->MoveObjToVisibleLayer( pNewGroupObj );
pNewContact->ConnectToLayout();
2011-01-28 11:31:24 +00:00
// #i53320# - No adjustment of the positioning and alignment
// attributes, if group members aren't positioned yet.
if ( !bGroupMembersNotPositioned )
{
2011-01-28 11:31:24 +00:00
// #i26791# - Adjust positioning and alignment attributes.
lcl_AdjustPositioningAttr( pFmt, *pNewGroupObj );
}
2000-09-18 23:08:29 +00:00
if( pUndo )
{
pUndo->SetGroupFmt( pFmt );
GetIDocumentUndoRedo().AppendUndo( pUndo );
2000-09-18 23:08:29 +00:00
}
}
else
2000-09-18 23:08:29 +00:00
{
if (GetIDocumentUndoRedo().DoesUndo())
{
GetIDocumentUndoRedo().ClearRedo();
}
rDrawView.GroupMarked();
OSL_ENSURE( rMrkList.GetMarkCount() == 1, "GroupMarked more or none groups." );
2000-09-18 23:08:29 +00:00
}
2000-09-18 23:08:29 +00:00
return pNewContact;
}
void SwDoc::UnGroupSelection( SdrView& rDrawView )
{
bool const bUndo = GetIDocumentUndoRedo().DoesUndo();
2000-09-18 23:08:29 +00:00
if( bUndo )
{
GetIDocumentUndoRedo().ClearRedo();
}
2011-01-28 11:31:24 +00:00
// replace marked 'virtual' drawing objects by the corresponding 'master'
// drawing objects.
SwDrawView::ReplaceMarkedDrawVirtObjs( rDrawView );
const SdrMarkList &rMrkList = rDrawView.GetMarkedObjectList();
std::vector< std::pair< SwDrawFrmFmt*, SdrObject* > >* pFmtsAndObjs( 0L );
const sal_uInt32 nMarkCount( rMrkList.GetMarkCount() );
if ( nMarkCount )
2000-09-18 23:08:29 +00:00
{
pFmtsAndObjs = new std::vector< std::pair< SwDrawFrmFmt*, SdrObject* > >[nMarkCount];
SdrObject *pMyObj = rMrkList.GetMark( 0 )->GetMarkedSdrObj();
if( !pMyObj->GetUpGroup() )
2000-09-18 23:08:29 +00:00
{
OUString sDrwFmtNm("DrawObject");
for ( sal_uInt16 i = 0; i < nMarkCount; ++i )
2000-09-18 23:08:29 +00:00
{
SdrObject *pObj = rMrkList.GetMark( i )->GetMarkedSdrObj();
2000-09-18 23:08:29 +00:00
if ( pObj->IsA( TYPE(SdrObjGroup) ) )
{
SwDrawContact *pContact = (SwDrawContact*)GetUserCall(pObj);
SwFmtAnchor aAnch( pContact->GetFmt()->GetAnchor() );
SdrObjList *pLst = ((SdrObjGroup*)pObj)->GetSubList();
SwUndoDrawUnGroup* pUndo = 0;
if( bUndo )
{
pUndo = new SwUndoDrawUnGroup( (SdrObjGroup*)pObj );
GetIDocumentUndoRedo().AppendUndo(pUndo);
2000-09-18 23:08:29 +00:00
}
for ( sal_uInt16 i2 = 0; i2 < pLst->GetObjCount(); ++i2 )
2000-09-18 23:08:29 +00:00
{
SdrObject* pSubObj = pLst->GetObj( i2 );
2000-09-18 23:08:29 +00:00
SwDrawFrmFmt *pFmt = MakeDrawFrmFmt( sDrwFmtNm,
GetDfltFrmFmt() );
pFmt->SetFmtAttr( aAnch );
2011-01-28 11:31:24 +00:00
// #i36010# - set layout direction of the position
pFmt->SetPositionLayoutDir(
text::PositionLayoutDir::PositionInLayoutDirOfAnchor );
pFmtsAndObjs[i].push_back( std::pair< SwDrawFrmFmt*, SdrObject* >( pFmt, pSubObj ) );
2000-09-18 23:08:29 +00:00
if( bUndo )
pUndo->AddObj( i2, pFmt );
}
}
}
}
}
rDrawView.UnGroupMarked();
// creation of <SwDrawContact> instances for the former group members and
// its connection to the Writer layout.
for ( sal_uInt32 i = 0; i < nMarkCount; ++i )
{
SwUndoDrawUnGroupConnectToLayout* pUndo = 0;
if( bUndo )
{
pUndo = new SwUndoDrawUnGroupConnectToLayout();
GetIDocumentUndoRedo().AppendUndo(pUndo);
}
while ( pFmtsAndObjs[i].size() > 0 )
{
SwDrawFrmFmt* pFmt( pFmtsAndObjs[i].back().first );
SdrObject* pObj( pFmtsAndObjs[i].back().second );
pFmtsAndObjs[i].pop_back();
SwDrawContact* pContact = new SwDrawContact( pFmt, pObj );
pContact->MoveObjToVisibleLayer( pObj );
pContact->ConnectToLayout();
lcl_AdjustPositioningAttr( pFmt, *pObj );
if ( bUndo )
{
pUndo->AddFmtAndObj( pFmt, pObj );
}
}
}
delete [] pFmtsAndObjs;
2000-09-18 23:08:29 +00:00
}
bool SwDoc::DeleteSelection( SwDrawView& rDrawView )
2000-09-18 23:08:29 +00:00
{
bool bCallBase = false;
const SdrMarkList &rMrkList = rDrawView.GetMarkedObjectList();
2000-09-18 23:08:29 +00:00
if( rMrkList.GetMarkCount() )
{
GetIDocumentUndoRedo().StartUndo(UNDO_EMPTY, NULL);
sal_uInt16 i;
bool bDelMarked = true;
2000-09-18 23:08:29 +00:00
if( 1 == rMrkList.GetMarkCount() )
{
SdrObject *pObj = rMrkList.GetMark( 0 )->GetMarkedSdrObj();
if( pObj->ISA(SwVirtFlyDrawObj) )
2000-09-18 23:08:29 +00:00
{
SwFlyFrmFmt* pFrmFmt = (SwFlyFrmFmt*)
((SwVirtFlyDrawObj*)pObj)->GetFlyFrm()->GetFmt();
if( pFrmFmt )
{
DelLayoutFmt( pFrmFmt );
bDelMarked = false;
2000-09-18 23:08:29 +00:00
}
}
}
for( i = 0; i < rMrkList.GetMarkCount(); ++i )
{
SdrObject *pObj = rMrkList.GetMark( i )->GetMarkedSdrObj();
if( !pObj->ISA(SwVirtFlyDrawObj) )
2000-09-18 23:08:29 +00:00
{
SwDrawContact *pC = (SwDrawContact*)GetUserCall(pObj);
SwDrawFrmFmt *pFrmFmt = (SwDrawFrmFmt*)pC->GetFmt();
if( pFrmFmt &&
FLY_AS_CHAR == pFrmFmt->GetAnchor().GetAnchorId() )
2000-09-18 23:08:29 +00:00
{
rDrawView.MarkObj( pObj, rDrawView.Imp().GetPageView(), sal_True );
2000-09-18 23:08:29 +00:00
--i;
DelLayoutFmt( pFrmFmt );
}
}
}
if( rMrkList.GetMarkCount() && bDelMarked )
{
SdrObject *pObj = rMrkList.GetMark( 0 )->GetMarkedSdrObj();
2000-09-18 23:08:29 +00:00
if( !pObj->GetUpGroup() )
{
SwUndoDrawDelete *const pUndo =
(!GetIDocumentUndoRedo().DoesUndo())
? 0
: new SwUndoDrawDelete( (sal_uInt16)rMrkList.GetMarkCount() );
2000-09-18 23:08:29 +00:00
// Destroy ContactObjects, save formats.
2000-09-18 23:08:29 +00:00
for( i = 0; i < rMrkList.GetMarkCount(); ++i )
{
const SdrMark& rMark = *rMrkList.GetMark( i );
pObj = rMark.GetMarkedSdrObj();
2000-09-18 23:08:29 +00:00
SwDrawContact *pContact = (SwDrawContact*)pObj->GetUserCall();
if( pContact ) // of course not for grouped objects
2000-09-18 23:08:29 +00:00
{
SwDrawFrmFmt *pFmt = (SwDrawFrmFmt*)pContact->GetFmt();
2011-01-28 11:31:24 +00:00
// before delete of selection is performed, marked
// <SwDrawVirtObj>-objects have to be replaced by its
// reference objects. Thus, assert, if a
// <SwDrawVirt>-object is found in the mark list.
if ( pObj->ISA(SwDrawVirtObj) )
{
OSL_FAIL( "<SwDrawVirtObj> is still marked for delete. application will crash!" );
}
// Deletes itself!
pContact->Changed(*pObj, SDRUSERCALL_DELETE, pObj->GetLastBoundRect() );
2000-09-18 23:08:29 +00:00
pObj->SetUserCall( 0 );
if( pUndo )
pUndo->AddObj( i, pFmt, rMark );
2000-09-18 23:08:29 +00:00
else
DelFrmFmt( pFmt );
}
}
if( pUndo )
{
GetIDocumentUndoRedo().AppendUndo( pUndo );
}
2000-09-18 23:08:29 +00:00
}
bCallBase = true;
2000-09-18 23:08:29 +00:00
}
SetModified();
GetIDocumentUndoRedo().EndUndo(UNDO_EMPTY, NULL);
2000-09-18 23:08:29 +00:00
}
return bCallBase;
}
_ZSortFly::_ZSortFly( const SwFrmFmt* pFrmFmt, const SwFmtAnchor* pFlyAn,
sal_uInt32 nArrOrdNum )
2000-09-18 23:08:29 +00:00
: pFmt( pFrmFmt ), pAnchor( pFlyAn ), nOrdNum( nArrOrdNum )
{
// #i11176#
// This also needs to work when no layout exists. Thus, for
// FlyFrames an alternative method is used now in that case.
if( RES_FLYFRMFMT == pFmt->Which() )
2000-09-18 23:08:29 +00:00
{
if( pFmt->getIDocumentLayoutAccess()->GetCurrentViewShell() ) //swmod 071107//swmod 071225
2000-09-18 23:08:29 +00:00
{
// See if there is an SdrObject for it
SwFlyFrm* pFly = SwIterator<SwFlyFrm,SwFmt>::FirstElement( *pFrmFmt );
if( pFly )
nOrdNum = pFly->GetVirtDrawObj()->GetOrdNum();
2000-09-18 23:08:29 +00:00
}
else
2000-09-18 23:08:29 +00:00
{
// See if there is an SdrObject for it
SwFlyDrawContact* pContact = SwIterator<SwFlyDrawContact,SwFmt>::FirstElement( *pFrmFmt );
if( pContact )
nOrdNum = pContact->GetMaster()->GetOrdNum();
2000-09-18 23:08:29 +00:00
}
}
else if( RES_DRAWFRMFMT == pFmt->Which() )
{
// See if there is an SdrObject for it
SwDrawContact* pContact = SwIterator<SwDrawContact,SwFmt>::FirstElement( *pFrmFmt );
if( pContact )
nOrdNum = pContact->GetMaster()->GetOrdNum();
}
else {
OSL_ENSURE( !this, "what is that for a format?" );
}
2000-09-18 23:08:29 +00:00
}
#include <svx/sxenditm.hxx>
// Is also called by the Sw3 Reader, if there was an error when reading the
// drawing layer. If it is called by the Sw3 Reader the layer is rebuilt
// from scratch.
2000-09-18 23:08:29 +00:00
void SwDoc::InitDrawModel()
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLog, "SW", "JP93722", "SwDoc::InitDrawModel" );
2001-07-23 16:20:51 +00:00
// !! Attention: there is similar code in the Sw3 Reader (sw3imp.cxx) that
// also has to be maintained!!
if ( mpDrawModel )
2000-09-18 23:08:29 +00:00
ReleaseDrawModel();
// Setup DrawPool and EditEnginePool. Ownership is ours and only gets passed
// to the Drawing.
// The pools are destroyed in the ReleaseDrawModel.
2011-02-07 20:21:18 +01:00
// for loading the drawing items. This must be loaded without RefCounts!
CWS-TOOLING: integrate CWS aw063 2009-02-12 13:10:24 +0100 aw r267649 : #i99123# when a primitive is invisible, it is not sufficient to produce no output when decomposing, but to add invisible data using HitTestPrimitive2D. This is needed for the slideshow which relies on geometry data in MetaFiles when painting invisible objects 2009-02-12 13:08:39 +0100 aw r267648 : #i99123# do not ignore HitTestPrimitive2D, but draw empty rectangles instead. This is needed since Slideshow is based on getting MetaFile content when painting invisible objects 2009-02-11 16:04:28 +0100 aw r267620 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:04:10 +0100 aw r267619 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:56 +0100 aw r267618 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:39 +0100 aw r267617 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:21 +0100 aw r267615 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:48 +0100 aw r267614 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:24 +0100 aw r267613 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:01 +0100 aw r267612 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:01:32 +0100 aw r267611 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:01:05 +0100 aw r267610 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:00:15 +0100 aw r267608 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 11:27:33 +0100 aw r267585 : #i98788# added missing include for STL 2009-02-10 17:46:50 +0100 aw r267570 : #i98788# added reaction on pool destruction 2009-02-10 17:11:58 +0100 aw r267562 : #i98788# added messaging mechanism to register for pool destruction 2009-02-10 13:35:35 +0100 aw r267549 : #i98788# removing changes, too complicated and risky for 3.1 2009-02-10 12:13:48 +0100 aw r267546 : #i98788# 4th round 2009-02-10 12:13:37 +0100 aw r267545 : #i98788# 4th round 2009-02-10 12:13:26 +0100 aw r267544 : #i98788# 4th round 2009-02-10 12:13:14 +0100 aw r267543 : #i98788# 4th round 2009-02-10 12:13:03 +0100 aw r267542 : #i98788# 4th round 2009-02-10 12:12:50 +0100 aw r267541 : #i98788# 4th round 2009-02-10 12:12:37 +0100 aw r267540 : #i98788# 4th round 2009-02-08 14:38:22 +0100 aw r267495 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:38:06 +0100 aw r267494 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:37:48 +0100 aw r267493 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:37:17 +0100 aw r267492 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:56 +0100 aw r267491 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:44 +0100 aw r267490 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:29 +0100 aw r267489 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:16 +0100 aw r267488 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:02 +0100 aw r267487 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:35:46 +0100 aw r267486 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-05 12:20:39 +0100 aw r267415 : #i98788# 2nd batch of adaptions for SfxItemPoolHolder addition 2009-02-04 15:12:54 +0100 aw r267385 : #i98788# added newline at EOF 2009-02-04 13:26:04 +0100 aw r267379 : #i98788# make SfxItemPool holdable 2009-02-04 13:25:40 +0100 aw r267378 : #i98788# make SfxItemPool holdable 2009-02-04 13:25:08 +0100 aw r267377 : #i98788# make SfxItemPool holdable 2009-02-04 13:24:42 +0100 aw r267376 : #i98788# make SfxItemPool holdable 2009-02-04 13:23:14 +0100 aw r267375 : #i98788# make SfxItemPool holdable 2009-02-04 13:23:02 +0100 aw r267374 : #i98788# make SfxItemPool holdable 2009-01-29 17:08:31 +0100 aw r267159 : #i97628# completed the fix 2009-01-29 17:08:15 +0100 aw r267158 : #i97628# completed the fix 2009-01-29 14:09:07 +0100 aw r267132 : #i97628# Corrected usage of ParagraphData in headers 2009-01-29 14:06:58 +0100 iha r267131 : #i98344# incorrect font size in charts 2009-01-29 12:13:46 +0100 aw r267115 : #i97628# back to old state; triggers too many errors in other modules 2009-01-29 12:03:51 +0100 aw r267114 : #i97628# enabled exceptions due to STL vector include 2009-01-29 11:21:37 +0100 aw r267107 : #i97628# added needed include 2009-01-28 17:58:29 +0100 aw r267077 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:58:12 +0100 aw r267076 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:57:51 +0100 aw r267074 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:57:21 +0100 aw r267073 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-27 17:07:33 +0100 aw r267011 : #i98402# added support for ViewRange when exporting MetaFiles in ObjectContactOfPageView::DoProcessDisplay to avoid to paint too much 2009-01-27 11:45:48 +0100 aw r266973 : #i98404# Added a warning to a place where a conversion to rectangle should not be copied from 2009-01-26 21:44:36 +0100 iha r266949 : #i98497# 3D charts are rendered with wrong size 2009-01-26 20:47:07 +0100 aw r266947 : #i98404# handle BackgroundColorPrimitive2D directly in PixelRenderers and avoid AA under all circumstances 2009-01-26 14:50:36 +0100 aw r266926 : #i98386# secured cloning of SdrObject in IMapUserData by boost::shared_prt usage 2009-01-26 12:51:30 +0100 aw r266916 : #i96581# added separated FontStretching and fallback for small X!=Y scale differences 2009-01-23 16:14:55 +0100 aw r266834 : #i96475# added missing implementation of TextDecoratedPortionPrimitive2D::getB2DRange 2009-01-23 15:24:34 +0100 aw r266826 : #i98405# fixed fallback to DrawAlphaRect to use the correctly sized rectangle 2009-01-23 13:34:43 +0100 aw r266813 : #i96474# fixed impSplitSingleWords for an unexpected case 2009-01-23 10:47:31 +0100 aw r266786 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:47:20 +0100 aw r266785 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:47:09 +0100 aw r266783 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:46:58 +0100 aw r266782 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:46:48 +0100 aw r266781 : #i98289#,#i96474# tooling and new flags for tasks
2009-03-04 14:16:02 +00:00
SfxItemPool *pSdrPool = new SdrItemPool( &GetAttrPool() );
2011-02-07 20:21:18 +01:00
// change DefaultItems for the SdrEdgeObj distance items to TWIPS.
if(pSdrPool)
{
const long nDefEdgeDist = ((500 * 72) / 127); // 1/100th mm in twips
pSdrPool->SetPoolDefaultItem(SdrEdgeNode1HorzDistItem(nDefEdgeDist));
pSdrPool->SetPoolDefaultItem(SdrEdgeNode1VertDistItem(nDefEdgeDist));
pSdrPool->SetPoolDefaultItem(SdrEdgeNode2HorzDistItem(nDefEdgeDist));
pSdrPool->SetPoolDefaultItem(SdrEdgeNode2VertDistItem(nDefEdgeDist));
// #i33700#
// Set shadow distance defaults as PoolDefaultItems. Details see bug.
pSdrPool->SetPoolDefaultItem(SdrShadowXDistItem((300 * 72) / 127));
pSdrPool->SetPoolDefaultItem(SdrShadowYDistItem((300 * 72) / 127));
}
SfxItemPool *pEEgPool = EditEngine::CreatePool( sal_False );
2000-09-18 23:08:29 +00:00
pSdrPool->SetSecondaryPool( pEEgPool );
CWS-TOOLING: integrate CWS aw063 2009-02-12 13:10:24 +0100 aw r267649 : #i99123# when a primitive is invisible, it is not sufficient to produce no output when decomposing, but to add invisible data using HitTestPrimitive2D. This is needed for the slideshow which relies on geometry data in MetaFiles when painting invisible objects 2009-02-12 13:08:39 +0100 aw r267648 : #i99123# do not ignore HitTestPrimitive2D, but draw empty rectangles instead. This is needed since Slideshow is based on getting MetaFile content when painting invisible objects 2009-02-11 16:04:28 +0100 aw r267620 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:04:10 +0100 aw r267619 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:56 +0100 aw r267618 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:39 +0100 aw r267617 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:21 +0100 aw r267615 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:48 +0100 aw r267614 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:24 +0100 aw r267613 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:01 +0100 aw r267612 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:01:32 +0100 aw r267611 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:01:05 +0100 aw r267610 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:00:15 +0100 aw r267608 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 11:27:33 +0100 aw r267585 : #i98788# added missing include for STL 2009-02-10 17:46:50 +0100 aw r267570 : #i98788# added reaction on pool destruction 2009-02-10 17:11:58 +0100 aw r267562 : #i98788# added messaging mechanism to register for pool destruction 2009-02-10 13:35:35 +0100 aw r267549 : #i98788# removing changes, too complicated and risky for 3.1 2009-02-10 12:13:48 +0100 aw r267546 : #i98788# 4th round 2009-02-10 12:13:37 +0100 aw r267545 : #i98788# 4th round 2009-02-10 12:13:26 +0100 aw r267544 : #i98788# 4th round 2009-02-10 12:13:14 +0100 aw r267543 : #i98788# 4th round 2009-02-10 12:13:03 +0100 aw r267542 : #i98788# 4th round 2009-02-10 12:12:50 +0100 aw r267541 : #i98788# 4th round 2009-02-10 12:12:37 +0100 aw r267540 : #i98788# 4th round 2009-02-08 14:38:22 +0100 aw r267495 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:38:06 +0100 aw r267494 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:37:48 +0100 aw r267493 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:37:17 +0100 aw r267492 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:56 +0100 aw r267491 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:44 +0100 aw r267490 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:29 +0100 aw r267489 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:16 +0100 aw r267488 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:02 +0100 aw r267487 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:35:46 +0100 aw r267486 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-05 12:20:39 +0100 aw r267415 : #i98788# 2nd batch of adaptions for SfxItemPoolHolder addition 2009-02-04 15:12:54 +0100 aw r267385 : #i98788# added newline at EOF 2009-02-04 13:26:04 +0100 aw r267379 : #i98788# make SfxItemPool holdable 2009-02-04 13:25:40 +0100 aw r267378 : #i98788# make SfxItemPool holdable 2009-02-04 13:25:08 +0100 aw r267377 : #i98788# make SfxItemPool holdable 2009-02-04 13:24:42 +0100 aw r267376 : #i98788# make SfxItemPool holdable 2009-02-04 13:23:14 +0100 aw r267375 : #i98788# make SfxItemPool holdable 2009-02-04 13:23:02 +0100 aw r267374 : #i98788# make SfxItemPool holdable 2009-01-29 17:08:31 +0100 aw r267159 : #i97628# completed the fix 2009-01-29 17:08:15 +0100 aw r267158 : #i97628# completed the fix 2009-01-29 14:09:07 +0100 aw r267132 : #i97628# Corrected usage of ParagraphData in headers 2009-01-29 14:06:58 +0100 iha r267131 : #i98344# incorrect font size in charts 2009-01-29 12:13:46 +0100 aw r267115 : #i97628# back to old state; triggers too many errors in other modules 2009-01-29 12:03:51 +0100 aw r267114 : #i97628# enabled exceptions due to STL vector include 2009-01-29 11:21:37 +0100 aw r267107 : #i97628# added needed include 2009-01-28 17:58:29 +0100 aw r267077 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:58:12 +0100 aw r267076 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:57:51 +0100 aw r267074 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:57:21 +0100 aw r267073 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-27 17:07:33 +0100 aw r267011 : #i98402# added support for ViewRange when exporting MetaFiles in ObjectContactOfPageView::DoProcessDisplay to avoid to paint too much 2009-01-27 11:45:48 +0100 aw r266973 : #i98404# Added a warning to a place where a conversion to rectangle should not be copied from 2009-01-26 21:44:36 +0100 iha r266949 : #i98497# 3D charts are rendered with wrong size 2009-01-26 20:47:07 +0100 aw r266947 : #i98404# handle BackgroundColorPrimitive2D directly in PixelRenderers and avoid AA under all circumstances 2009-01-26 14:50:36 +0100 aw r266926 : #i98386# secured cloning of SdrObject in IMapUserData by boost::shared_prt usage 2009-01-26 12:51:30 +0100 aw r266916 : #i96581# added separated FontStretching and fallback for small X!=Y scale differences 2009-01-23 16:14:55 +0100 aw r266834 : #i96475# added missing implementation of TextDecoratedPortionPrimitive2D::getB2DRange 2009-01-23 15:24:34 +0100 aw r266826 : #i98405# fixed fallback to DrawAlphaRect to use the correctly sized rectangle 2009-01-23 13:34:43 +0100 aw r266813 : #i96474# fixed impSplitSingleWords for an unexpected case 2009-01-23 10:47:31 +0100 aw r266786 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:47:20 +0100 aw r266785 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:47:09 +0100 aw r266783 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:46:58 +0100 aw r266782 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:46:48 +0100 aw r266781 : #i98289#,#i96474# tooling and new flags for tasks
2009-03-04 14:16:02 +00:00
if ( !GetAttrPool().GetFrozenIdRanges () )
GetAttrPool().FreezeIdRanges();
else
pSdrPool->FreezeIdRanges();
2000-09-18 23:08:29 +00:00
2011-02-07 20:21:18 +01:00
// set FontHeight pool defaults without changing static SdrEngineDefaults
CWS-TOOLING: integrate CWS aw063 2009-02-12 13:10:24 +0100 aw r267649 : #i99123# when a primitive is invisible, it is not sufficient to produce no output when decomposing, but to add invisible data using HitTestPrimitive2D. This is needed for the slideshow which relies on geometry data in MetaFiles when painting invisible objects 2009-02-12 13:08:39 +0100 aw r267648 : #i99123# do not ignore HitTestPrimitive2D, but draw empty rectangles instead. This is needed since Slideshow is based on getting MetaFile content when painting invisible objects 2009-02-11 16:04:28 +0100 aw r267620 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:04:10 +0100 aw r267619 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:56 +0100 aw r267618 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:39 +0100 aw r267617 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:21 +0100 aw r267615 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:48 +0100 aw r267614 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:24 +0100 aw r267613 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:01 +0100 aw r267612 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:01:32 +0100 aw r267611 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:01:05 +0100 aw r267610 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:00:15 +0100 aw r267608 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 11:27:33 +0100 aw r267585 : #i98788# added missing include for STL 2009-02-10 17:46:50 +0100 aw r267570 : #i98788# added reaction on pool destruction 2009-02-10 17:11:58 +0100 aw r267562 : #i98788# added messaging mechanism to register for pool destruction 2009-02-10 13:35:35 +0100 aw r267549 : #i98788# removing changes, too complicated and risky for 3.1 2009-02-10 12:13:48 +0100 aw r267546 : #i98788# 4th round 2009-02-10 12:13:37 +0100 aw r267545 : #i98788# 4th round 2009-02-10 12:13:26 +0100 aw r267544 : #i98788# 4th round 2009-02-10 12:13:14 +0100 aw r267543 : #i98788# 4th round 2009-02-10 12:13:03 +0100 aw r267542 : #i98788# 4th round 2009-02-10 12:12:50 +0100 aw r267541 : #i98788# 4th round 2009-02-10 12:12:37 +0100 aw r267540 : #i98788# 4th round 2009-02-08 14:38:22 +0100 aw r267495 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:38:06 +0100 aw r267494 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:37:48 +0100 aw r267493 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:37:17 +0100 aw r267492 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:56 +0100 aw r267491 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:44 +0100 aw r267490 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:29 +0100 aw r267489 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:16 +0100 aw r267488 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:02 +0100 aw r267487 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:35:46 +0100 aw r267486 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-05 12:20:39 +0100 aw r267415 : #i98788# 2nd batch of adaptions for SfxItemPoolHolder addition 2009-02-04 15:12:54 +0100 aw r267385 : #i98788# added newline at EOF 2009-02-04 13:26:04 +0100 aw r267379 : #i98788# make SfxItemPool holdable 2009-02-04 13:25:40 +0100 aw r267378 : #i98788# make SfxItemPool holdable 2009-02-04 13:25:08 +0100 aw r267377 : #i98788# make SfxItemPool holdable 2009-02-04 13:24:42 +0100 aw r267376 : #i98788# make SfxItemPool holdable 2009-02-04 13:23:14 +0100 aw r267375 : #i98788# make SfxItemPool holdable 2009-02-04 13:23:02 +0100 aw r267374 : #i98788# make SfxItemPool holdable 2009-01-29 17:08:31 +0100 aw r267159 : #i97628# completed the fix 2009-01-29 17:08:15 +0100 aw r267158 : #i97628# completed the fix 2009-01-29 14:09:07 +0100 aw r267132 : #i97628# Corrected usage of ParagraphData in headers 2009-01-29 14:06:58 +0100 iha r267131 : #i98344# incorrect font size in charts 2009-01-29 12:13:46 +0100 aw r267115 : #i97628# back to old state; triggers too many errors in other modules 2009-01-29 12:03:51 +0100 aw r267114 : #i97628# enabled exceptions due to STL vector include 2009-01-29 11:21:37 +0100 aw r267107 : #i97628# added needed include 2009-01-28 17:58:29 +0100 aw r267077 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:58:12 +0100 aw r267076 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:57:51 +0100 aw r267074 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:57:21 +0100 aw r267073 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-27 17:07:33 +0100 aw r267011 : #i98402# added support for ViewRange when exporting MetaFiles in ObjectContactOfPageView::DoProcessDisplay to avoid to paint too much 2009-01-27 11:45:48 +0100 aw r266973 : #i98404# Added a warning to a place where a conversion to rectangle should not be copied from 2009-01-26 21:44:36 +0100 iha r266949 : #i98497# 3D charts are rendered with wrong size 2009-01-26 20:47:07 +0100 aw r266947 : #i98404# handle BackgroundColorPrimitive2D directly in PixelRenderers and avoid AA under all circumstances 2009-01-26 14:50:36 +0100 aw r266926 : #i98386# secured cloning of SdrObject in IMapUserData by boost::shared_prt usage 2009-01-26 12:51:30 +0100 aw r266916 : #i96581# added separated FontStretching and fallback for small X!=Y scale differences 2009-01-23 16:14:55 +0100 aw r266834 : #i96475# added missing implementation of TextDecoratedPortionPrimitive2D::getB2DRange 2009-01-23 15:24:34 +0100 aw r266826 : #i98405# fixed fallback to DrawAlphaRect to use the correctly sized rectangle 2009-01-23 13:34:43 +0100 aw r266813 : #i96474# fixed impSplitSingleWords for an unexpected case 2009-01-23 10:47:31 +0100 aw r266786 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:47:20 +0100 aw r266785 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:47:09 +0100 aw r266783 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:46:58 +0100 aw r266782 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:46:48 +0100 aw r266781 : #i98289#,#i96474# tooling and new flags for tasks
2009-03-04 14:16:02 +00:00
GetAttrPool().SetPoolDefaultItem(SvxFontHeightItem( 240, 100, EE_CHAR_FONTHEIGHT ));
2001-07-23 16:20:51 +00:00
RTL_LOGFILE_CONTEXT_TRACE( aLog, "before create DrawDocument" );
// The document owns the SdrModel. We always have two layers and one page.
mpDrawModel = new SwDrawDocument( this );
2000-09-18 23:08:29 +00:00
mpDrawModel->EnableUndo( GetIDocumentUndoRedo().DoesUndo() );
2000-09-18 23:08:29 +00:00
String sLayerNm;
sLayerNm.AssignAscii(RTL_CONSTASCII_STRINGPARAM("Hell" ));
mnHell = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
2000-09-18 23:08:29 +00:00
sLayerNm.AssignAscii(RTL_CONSTASCII_STRINGPARAM("Heaven" ));
mnHeaven = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
2000-09-18 23:08:29 +00:00
sLayerNm.AssignAscii(RTL_CONSTASCII_STRINGPARAM("Controls" ));
mnControls = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
2000-09-18 23:08:29 +00:00
2011-01-28 11:31:24 +00:00
// add invisible layers corresponding to the visible ones.
{
sLayerNm.AssignAscii(RTL_CONSTASCII_STRINGPARAM("InvisibleHell" ));
mnInvisibleHell = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
sLayerNm.AssignAscii(RTL_CONSTASCII_STRINGPARAM("InvisibleHeaven" ));
mnInvisibleHeaven = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
sLayerNm.AssignAscii(RTL_CONSTASCII_STRINGPARAM("InvisibleControls" ));
mnInvisibleControls = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
}
SdrPage* pMasterPage = mpDrawModel->AllocPage( sal_False );
mpDrawModel->InsertPage( pMasterPage );
2001-07-23 16:20:51 +00:00
RTL_LOGFILE_CONTEXT_TRACE( aLog, "after create DrawDocument" );
RTL_LOGFILE_CONTEXT_TRACE( aLog, "before create Spellchecker/Hyphenator" );
SdrOutliner& rOutliner = mpDrawModel->GetDrawOutliner();
2000-10-27 10:55:57 +00:00
uno::Reference< XSpellChecker1 > xSpell = ::GetSpellChecker();
2000-09-18 23:08:29 +00:00
rOutliner.SetSpeller( xSpell );
2001-10-18 17:16:15 +00:00
uno::Reference<XHyphenator> xHyphenator( ::GetHyphenator() );
rOutliner.SetHyphenator( xHyphenator );
2001-07-23 16:20:51 +00:00
RTL_LOGFILE_CONTEXT_TRACE( aLog, "after create Spellchecker/Hyphenator" );
2000-09-18 23:08:29 +00:00
SetCalcFieldValueHdl(&rOutliner);
SetCalcFieldValueHdl(&mpDrawModel->GetHitTestOutliner());
2000-09-18 23:08:29 +00:00
// Set the LinkManager in the model so that linked graphics can be inserted.
// The WinWord import needs it too.
mpDrawModel->SetLinkManager( &GetLinkManager() );
mpDrawModel->SetAddExtLeading( get(IDocumentSettingAccess::ADD_EXT_LEADING) );
2000-09-18 23:08:29 +00:00
OutputDevice* pRefDev = getReferenceDevice( false );
if ( pRefDev )
mpDrawModel->SetRefDevice( pRefDev );
mpDrawModel->SetNotifyUndoActionHdl( LINK( this, SwDoc, AddDrawUndo ));
if ( mpCurrentView )
2000-09-18 23:08:29 +00:00
{
ViewShell* pViewSh = mpCurrentView;
do
{
SwRootFrm* pRoot = pViewSh->GetLayout();
if( pRoot && !pRoot->GetDrawPage() )
{
// Disable "multiple layout" for the moment:
// use pMasterPage instead of a new created SdrPage
// mpDrawModel->AllocPage( FALSE );
// mpDrawModel->InsertPage( pDrawPage );
SdrPage* pDrawPage = pMasterPage;
pRoot->SetDrawPage( pDrawPage );
pDrawPage->SetSize( pRoot->Frm().SSize() );
}
pViewSh = (ViewShell*)pViewSh->GetNext();
}while( pViewSh != mpCurrentView );
2000-09-18 23:08:29 +00:00
}
UpdateDrawDefaults();
2000-09-18 23:08:29 +00:00
}
2011-01-28 11:31:24 +00:00
/** method to notify drawing page view about the invisible layers */
void SwDoc::NotifyInvisibleLayers( SdrPageView& _rSdrPageView )
{
String sLayerNm;
sLayerNm.AssignAscii(RTL_CONSTASCII_STRINGPARAM("InvisibleHell" ));
_rSdrPageView.SetLayerVisible( sLayerNm, sal_False );
sLayerNm.AssignAscii(RTL_CONSTASCII_STRINGPARAM("InvisibleHeaven" ));
_rSdrPageView.SetLayerVisible( sLayerNm, sal_False );
sLayerNm.AssignAscii(RTL_CONSTASCII_STRINGPARAM("InvisibleControls" ));
_rSdrPageView.SetLayerVisible( sLayerNm, sal_False );
}
/** method to determine, if a layer ID belongs to the visible ones.
@note If given layer ID is unknown, method asserts and returns <false>.
*/
bool SwDoc::IsVisibleLayerId( const SdrLayerID& _nLayerId ) const
{
bool bRetVal;
if ( _nLayerId == GetHeavenId() ||
_nLayerId == GetHellId() ||
_nLayerId == GetControlsId() )
{
bRetVal = true;
}
else if ( _nLayerId == GetInvisibleHeavenId() ||
_nLayerId == GetInvisibleHellId() ||
_nLayerId == GetInvisibleControlsId() )
{
bRetVal = false;
}
else
{
OSL_FAIL( "<SwDoc::IsVisibleLayerId(..)> - unknown layer ID." );
bRetVal = false;
}
return bRetVal;
}
/** method to determine, if the corresponding visible layer ID for a invisible one.
@note If given layer ID is a visible one, method returns given layer ID.
@note If given layer ID is unknown, method returns given layer ID.
*/
SdrLayerID SwDoc::GetVisibleLayerIdByInvisibleOne( const SdrLayerID& _nInvisibleLayerId )
{
SdrLayerID nVisibleLayerId;
if ( _nInvisibleLayerId == GetInvisibleHeavenId() )
{
nVisibleLayerId = GetHeavenId();
}
else if ( _nInvisibleLayerId == GetInvisibleHellId() )
{
nVisibleLayerId = GetHellId();
}
else if ( _nInvisibleLayerId == GetInvisibleControlsId() )
{
nVisibleLayerId = GetControlsId();
}
else if ( _nInvisibleLayerId == GetHeavenId() ||
_nInvisibleLayerId == GetHellId() ||
_nInvisibleLayerId == GetControlsId() )
{
OSL_FAIL( "<SwDoc::GetVisibleLayerIdByInvisibleOne(..)> - given layer ID already an invisible one." );
nVisibleLayerId = _nInvisibleLayerId;
}
else
{
OSL_FAIL( "<SwDoc::GetVisibleLayerIdByInvisibleOne(..)> - given layer ID is unknown." );
nVisibleLayerId = _nInvisibleLayerId;
}
return nVisibleLayerId;
}
/** method to determine, if the corresponding invisible layer ID for a visible one.
@note If given layer ID is a invisible one, method returns given layer ID.
@note If given layer ID is unknown, method returns given layer ID.
*/
SdrLayerID SwDoc::GetInvisibleLayerIdByVisibleOne( const SdrLayerID& _nVisibleLayerId )
{
SdrLayerID nInvisibleLayerId;
if ( _nVisibleLayerId == GetHeavenId() )
{
nInvisibleLayerId = GetInvisibleHeavenId();
}
else if ( _nVisibleLayerId == GetHellId() )
{
nInvisibleLayerId = GetInvisibleHellId();
}
else if ( _nVisibleLayerId == GetControlsId() )
{
nInvisibleLayerId = GetInvisibleControlsId();
}
else if ( _nVisibleLayerId == GetInvisibleHeavenId() ||
_nVisibleLayerId == GetInvisibleHellId() ||
_nVisibleLayerId == GetInvisibleControlsId() )
{
OSL_FAIL( "<SwDoc::GetInvisibleLayerIdByVisibleOne(..)> - given layer ID already an invisible one." );
nInvisibleLayerId = _nVisibleLayerId;
}
else
{
OSL_FAIL( "<SwDoc::GetInvisibleLayerIdByVisibleOne(..)> - given layer ID is unknown." );
nInvisibleLayerId = _nVisibleLayerId;
}
return nInvisibleLayerId;
}
2000-09-18 23:08:29 +00:00
void SwDoc::ReleaseDrawModel()
{
if ( mpDrawModel )
2000-09-18 23:08:29 +00:00
{
// !! Also maintain the code in the sw3io for inserting documents!!
2000-09-18 23:08:29 +00:00
delete mpDrawModel; mpDrawModel = 0;
CWS-TOOLING: integrate CWS aw063 2009-02-12 13:10:24 +0100 aw r267649 : #i99123# when a primitive is invisible, it is not sufficient to produce no output when decomposing, but to add invisible data using HitTestPrimitive2D. This is needed for the slideshow which relies on geometry data in MetaFiles when painting invisible objects 2009-02-12 13:08:39 +0100 aw r267648 : #i99123# do not ignore HitTestPrimitive2D, but draw empty rectangles instead. This is needed since Slideshow is based on getting MetaFile content when painting invisible objects 2009-02-11 16:04:28 +0100 aw r267620 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:04:10 +0100 aw r267619 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:56 +0100 aw r267618 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:39 +0100 aw r267617 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:21 +0100 aw r267615 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:48 +0100 aw r267614 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:24 +0100 aw r267613 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:01 +0100 aw r267612 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:01:32 +0100 aw r267611 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:01:05 +0100 aw r267610 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:00:15 +0100 aw r267608 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 11:27:33 +0100 aw r267585 : #i98788# added missing include for STL 2009-02-10 17:46:50 +0100 aw r267570 : #i98788# added reaction on pool destruction 2009-02-10 17:11:58 +0100 aw r267562 : #i98788# added messaging mechanism to register for pool destruction 2009-02-10 13:35:35 +0100 aw r267549 : #i98788# removing changes, too complicated and risky for 3.1 2009-02-10 12:13:48 +0100 aw r267546 : #i98788# 4th round 2009-02-10 12:13:37 +0100 aw r267545 : #i98788# 4th round 2009-02-10 12:13:26 +0100 aw r267544 : #i98788# 4th round 2009-02-10 12:13:14 +0100 aw r267543 : #i98788# 4th round 2009-02-10 12:13:03 +0100 aw r267542 : #i98788# 4th round 2009-02-10 12:12:50 +0100 aw r267541 : #i98788# 4th round 2009-02-10 12:12:37 +0100 aw r267540 : #i98788# 4th round 2009-02-08 14:38:22 +0100 aw r267495 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:38:06 +0100 aw r267494 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:37:48 +0100 aw r267493 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:37:17 +0100 aw r267492 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:56 +0100 aw r267491 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:44 +0100 aw r267490 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:29 +0100 aw r267489 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:16 +0100 aw r267488 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:02 +0100 aw r267487 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:35:46 +0100 aw r267486 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-05 12:20:39 +0100 aw r267415 : #i98788# 2nd batch of adaptions for SfxItemPoolHolder addition 2009-02-04 15:12:54 +0100 aw r267385 : #i98788# added newline at EOF 2009-02-04 13:26:04 +0100 aw r267379 : #i98788# make SfxItemPool holdable 2009-02-04 13:25:40 +0100 aw r267378 : #i98788# make SfxItemPool holdable 2009-02-04 13:25:08 +0100 aw r267377 : #i98788# make SfxItemPool holdable 2009-02-04 13:24:42 +0100 aw r267376 : #i98788# make SfxItemPool holdable 2009-02-04 13:23:14 +0100 aw r267375 : #i98788# make SfxItemPool holdable 2009-02-04 13:23:02 +0100 aw r267374 : #i98788# make SfxItemPool holdable 2009-01-29 17:08:31 +0100 aw r267159 : #i97628# completed the fix 2009-01-29 17:08:15 +0100 aw r267158 : #i97628# completed the fix 2009-01-29 14:09:07 +0100 aw r267132 : #i97628# Corrected usage of ParagraphData in headers 2009-01-29 14:06:58 +0100 iha r267131 : #i98344# incorrect font size in charts 2009-01-29 12:13:46 +0100 aw r267115 : #i97628# back to old state; triggers too many errors in other modules 2009-01-29 12:03:51 +0100 aw r267114 : #i97628# enabled exceptions due to STL vector include 2009-01-29 11:21:37 +0100 aw r267107 : #i97628# added needed include 2009-01-28 17:58:29 +0100 aw r267077 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:58:12 +0100 aw r267076 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:57:51 +0100 aw r267074 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:57:21 +0100 aw r267073 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-27 17:07:33 +0100 aw r267011 : #i98402# added support for ViewRange when exporting MetaFiles in ObjectContactOfPageView::DoProcessDisplay to avoid to paint too much 2009-01-27 11:45:48 +0100 aw r266973 : #i98404# Added a warning to a place where a conversion to rectangle should not be copied from 2009-01-26 21:44:36 +0100 iha r266949 : #i98497# 3D charts are rendered with wrong size 2009-01-26 20:47:07 +0100 aw r266947 : #i98404# handle BackgroundColorPrimitive2D directly in PixelRenderers and avoid AA under all circumstances 2009-01-26 14:50:36 +0100 aw r266926 : #i98386# secured cloning of SdrObject in IMapUserData by boost::shared_prt usage 2009-01-26 12:51:30 +0100 aw r266916 : #i96581# added separated FontStretching and fallback for small X!=Y scale differences 2009-01-23 16:14:55 +0100 aw r266834 : #i96475# added missing implementation of TextDecoratedPortionPrimitive2D::getB2DRange 2009-01-23 15:24:34 +0100 aw r266826 : #i98405# fixed fallback to DrawAlphaRect to use the correctly sized rectangle 2009-01-23 13:34:43 +0100 aw r266813 : #i96474# fixed impSplitSingleWords for an unexpected case 2009-01-23 10:47:31 +0100 aw r266786 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:47:20 +0100 aw r266785 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:47:09 +0100 aw r266783 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:46:58 +0100 aw r266782 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:46:48 +0100 aw r266781 : #i98289#,#i96474# tooling and new flags for tasks
2009-03-04 14:16:02 +00:00
SfxItemPool *pSdrPool = GetAttrPool().GetSecondaryPool();
2000-09-18 23:08:29 +00:00
OSL_ENSURE( pSdrPool, "missing pool" );
2000-09-18 23:08:29 +00:00
SfxItemPool *pEEgPool = pSdrPool->GetSecondaryPool();
OSL_ENSURE( !pEEgPool->GetSecondaryPool(), "I don't accept additional pools");
pSdrPool->Delete(); // First have the items destroyed,
// then destroy the chain!
GetAttrPool().SetSecondaryPool( 0 ); // This one's a must!
pSdrPool->SetSecondaryPool( 0 ); // That one's safer
CWS-TOOLING: integrate CWS aw063 2009-02-12 13:10:24 +0100 aw r267649 : #i99123# when a primitive is invisible, it is not sufficient to produce no output when decomposing, but to add invisible data using HitTestPrimitive2D. This is needed for the slideshow which relies on geometry data in MetaFiles when painting invisible objects 2009-02-12 13:08:39 +0100 aw r267648 : #i99123# do not ignore HitTestPrimitive2D, but draw empty rectangles instead. This is needed since Slideshow is based on getting MetaFile content when painting invisible objects 2009-02-11 16:04:28 +0100 aw r267620 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:04:10 +0100 aw r267619 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:56 +0100 aw r267618 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:39 +0100 aw r267617 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:03:21 +0100 aw r267615 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:48 +0100 aw r267614 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:24 +0100 aw r267613 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:02:01 +0100 aw r267612 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:01:32 +0100 aw r267611 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:01:05 +0100 aw r267610 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 16:00:15 +0100 aw r267608 : #i98788# made SfxItemPool destructor protected, added static ::Free method 2009-02-11 11:27:33 +0100 aw r267585 : #i98788# added missing include for STL 2009-02-10 17:46:50 +0100 aw r267570 : #i98788# added reaction on pool destruction 2009-02-10 17:11:58 +0100 aw r267562 : #i98788# added messaging mechanism to register for pool destruction 2009-02-10 13:35:35 +0100 aw r267549 : #i98788# removing changes, too complicated and risky for 3.1 2009-02-10 12:13:48 +0100 aw r267546 : #i98788# 4th round 2009-02-10 12:13:37 +0100 aw r267545 : #i98788# 4th round 2009-02-10 12:13:26 +0100 aw r267544 : #i98788# 4th round 2009-02-10 12:13:14 +0100 aw r267543 : #i98788# 4th round 2009-02-10 12:13:03 +0100 aw r267542 : #i98788# 4th round 2009-02-10 12:12:50 +0100 aw r267541 : #i98788# 4th round 2009-02-10 12:12:37 +0100 aw r267540 : #i98788# 4th round 2009-02-08 14:38:22 +0100 aw r267495 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:38:06 +0100 aw r267494 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:37:48 +0100 aw r267493 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:37:17 +0100 aw r267492 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:56 +0100 aw r267491 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:44 +0100 aw r267490 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:29 +0100 aw r267489 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:16 +0100 aw r267488 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:36:02 +0100 aw r267487 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-08 14:35:46 +0100 aw r267486 : #i98788# 3rd round of changes to SfxItemPool handling 2009-02-05 12:20:39 +0100 aw r267415 : #i98788# 2nd batch of adaptions for SfxItemPoolHolder addition 2009-02-04 15:12:54 +0100 aw r267385 : #i98788# added newline at EOF 2009-02-04 13:26:04 +0100 aw r267379 : #i98788# make SfxItemPool holdable 2009-02-04 13:25:40 +0100 aw r267378 : #i98788# make SfxItemPool holdable 2009-02-04 13:25:08 +0100 aw r267377 : #i98788# make SfxItemPool holdable 2009-02-04 13:24:42 +0100 aw r267376 : #i98788# make SfxItemPool holdable 2009-02-04 13:23:14 +0100 aw r267375 : #i98788# make SfxItemPool holdable 2009-02-04 13:23:02 +0100 aw r267374 : #i98788# make SfxItemPool holdable 2009-01-29 17:08:31 +0100 aw r267159 : #i97628# completed the fix 2009-01-29 17:08:15 +0100 aw r267158 : #i97628# completed the fix 2009-01-29 14:09:07 +0100 aw r267132 : #i97628# Corrected usage of ParagraphData in headers 2009-01-29 14:06:58 +0100 iha r267131 : #i98344# incorrect font size in charts 2009-01-29 12:13:46 +0100 aw r267115 : #i97628# back to old state; triggers too many errors in other modules 2009-01-29 12:03:51 +0100 aw r267114 : #i97628# enabled exceptions due to STL vector include 2009-01-29 11:21:37 +0100 aw r267107 : #i97628# added needed include 2009-01-28 17:58:29 +0100 aw r267077 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:58:12 +0100 aw r267076 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:57:51 +0100 aw r267074 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-28 17:57:21 +0100 aw r267073 : #i97628# first version of newly implemented OutlinerParaObject and adaptions 2009-01-27 17:07:33 +0100 aw r267011 : #i98402# added support for ViewRange when exporting MetaFiles in ObjectContactOfPageView::DoProcessDisplay to avoid to paint too much 2009-01-27 11:45:48 +0100 aw r266973 : #i98404# Added a warning to a place where a conversion to rectangle should not be copied from 2009-01-26 21:44:36 +0100 iha r266949 : #i98497# 3D charts are rendered with wrong size 2009-01-26 20:47:07 +0100 aw r266947 : #i98404# handle BackgroundColorPrimitive2D directly in PixelRenderers and avoid AA under all circumstances 2009-01-26 14:50:36 +0100 aw r266926 : #i98386# secured cloning of SdrObject in IMapUserData by boost::shared_prt usage 2009-01-26 12:51:30 +0100 aw r266916 : #i96581# added separated FontStretching and fallback for small X!=Y scale differences 2009-01-23 16:14:55 +0100 aw r266834 : #i96475# added missing implementation of TextDecoratedPortionPrimitive2D::getB2DRange 2009-01-23 15:24:34 +0100 aw r266826 : #i98405# fixed fallback to DrawAlphaRect to use the correctly sized rectangle 2009-01-23 13:34:43 +0100 aw r266813 : #i96474# fixed impSplitSingleWords for an unexpected case 2009-01-23 10:47:31 +0100 aw r266786 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:47:20 +0100 aw r266785 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:47:09 +0100 aw r266783 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:46:58 +0100 aw r266782 : #i98289#,#i96474# tooling and new flags for tasks 2009-01-23 10:46:48 +0100 aw r266781 : #i98289#,#i96474# tooling and new flags for tasks
2009-03-04 14:16:02 +00:00
SfxItemPool::Free(pSdrPool);
SfxItemPool::Free(pEEgPool);
2000-09-18 23:08:29 +00:00
}
}
SdrModel* SwDoc::_MakeDrawModel()
{
OSL_ENSURE( !mpDrawModel, "_MakeDrawModel: Why?" );
2000-09-18 23:08:29 +00:00
InitDrawModel();
if ( mpCurrentView )
2000-09-18 23:08:29 +00:00
{
ViewShell* pTmp = mpCurrentView;
2000-09-18 23:08:29 +00:00
do
{
pTmp->MakeDrawView();
pTmp = (ViewShell*) pTmp->GetNext();
} while ( pTmp != mpCurrentView );
2000-09-18 23:08:29 +00:00
// Broadcast, so that the FormShell can be connected to the DrawView
2000-09-18 23:08:29 +00:00
if( GetDocShell() )
{
SfxSimpleHint aHnt( SW_BROADCAST_DRAWVIEWS_CREATED );
GetDocShell()->Broadcast( aHnt );
}
} //swmod 071029//swmod 071225
return mpDrawModel;
2000-09-18 23:08:29 +00:00
}
void SwDoc::DrawNotifyUndoHdl()
{
mpDrawModel->SetNotifyUndoActionHdl( Link() );
2000-09-18 23:08:29 +00:00
}
/// In the Outliner, set a link to the method for field display in edit objects.
2000-09-18 23:08:29 +00:00
void SwDoc::SetCalcFieldValueHdl(Outliner* pOutliner)
{
pOutliner->SetCalcFieldValueHdl(LINK(this, SwDoc, CalcFieldValueHdl));
}
/// Recognise fields/URLs in the Outliner and set how they are displayed.
2000-09-18 23:08:29 +00:00
IMPL_LINK(SwDoc, CalcFieldValueHdl, EditFieldInfo*, pInfo)
{
if (pInfo)
{
const SvxFieldItem& rField = pInfo->GetField();
const SvxFieldData* pField = rField.GetField();
if (pField && pField->ISA(SvxDateField))
{
// Date field
2000-09-18 23:08:29 +00:00
pInfo->SetRepresentation(
((const SvxDateField*) pField)->GetFormatted(
*GetNumberFormatter( sal_True ), LANGUAGE_SYSTEM) );
2000-09-18 23:08:29 +00:00
}
else if (pField && pField->ISA(SvxURLField))
{
// URL field
2000-09-18 23:08:29 +00:00
switch ( ((const SvxURLField*) pField)->GetFormat() )
{
case SVXURLFORMAT_APPDEFAULT: //!!! Can be set in App???
2000-09-18 23:08:29 +00:00
case SVXURLFORMAT_REPR:
{
pInfo->SetRepresentation(
((const SvxURLField*)pField)->GetRepresentation());
}
break;
case SVXURLFORMAT_URL:
{
pInfo->SetRepresentation(
((const SvxURLField*)pField)->GetURL());
}
break;
}
sal_uInt16 nChrFmt;
2000-09-18 23:08:29 +00:00
if (IsVisitedURL(((const SvxURLField*)pField)->GetURL()))
nChrFmt = RES_POOLCHR_INET_VISIT;
else
nChrFmt = RES_POOLCHR_INET_NORMAL;
SwFmt *pFmt = GetCharFmtFromPool(nChrFmt);
Color aColor(COL_LIGHTBLUE);
if (pFmt)
aColor = pFmt->GetColor().GetValue();
pInfo->SetTxtColor(aColor);
}
else if (pField && pField->ISA(SdrMeasureField))
{
// Measure field
2000-09-18 23:08:29 +00:00
pInfo->ClearFldColor();
}
2002-11-22 09:44:14 +00:00
else if ( pField && pField->ISA(SvxExtTimeField))
{
// Time field
2002-11-22 09:44:14 +00:00
pInfo->SetRepresentation(
((const SvxExtTimeField*) pField)->GetFormatted(
*GetNumberFormatter( sal_True ), LANGUAGE_SYSTEM) );
2002-11-22 09:44:14 +00:00
}
2000-09-18 23:08:29 +00:00
else
{
OSL_FAIL("unknown field command");
pInfo->SetRepresentation( OUString( '?' ) );
2000-09-18 23:08:29 +00:00
}
}
return(0);
}
/* TFFDI: The functions formerly declared 'inline'
*/
const SdrModel* SwDoc::GetDrawModel() const { return mpDrawModel; }
SdrModel* SwDoc::GetDrawModel() { return mpDrawModel; }
SdrLayerID SwDoc::GetHeavenId() const { return mnHeaven; }
SdrLayerID SwDoc::GetHellId() const { return mnHell; }
SdrLayerID SwDoc::GetControlsId() const { return mnControls; }
SdrLayerID SwDoc::GetInvisibleHeavenId() const { return mnInvisibleHeaven; }
SdrLayerID SwDoc::GetInvisibleHellId() const { return mnInvisibleHell; }
SdrLayerID SwDoc::GetInvisibleControlsId() const { return mnInvisibleControls; }
SdrModel* SwDoc::GetOrCreateDrawModel() { return GetDrawModel() ? GetDrawModel() : _MakeDrawModel(); }
2011-01-28 11:31:24 +00:00
// #i62875#
namespace docfunc
{
bool ExistsDrawObjs( SwDoc& p_rDoc )
{
bool bExistsDrawObjs( false );
if ( p_rDoc.GetDrawModel() &&
p_rDoc.GetDrawModel()->GetPage( 0 ) )
{
const SdrPage& rSdrPage( *(p_rDoc.GetDrawModel()->GetPage( 0 )) );
SdrObjListIter aIter( rSdrPage, IM_FLAT );
while( aIter.IsMore() )
{
SdrObject* pObj( aIter.Next() );
if ( !dynamic_cast<SwVirtFlyDrawObj*>(pObj) &&
!dynamic_cast<SwFlyDrawObj*>(pObj) )
{
bExistsDrawObjs = true;
break;
}
}
}
return bExistsDrawObjs;
}
bool AllDrawObjsOnPage( SwDoc& p_rDoc )
{
bool bAllDrawObjsOnPage( true );
if ( p_rDoc.GetDrawModel() &&
p_rDoc.GetDrawModel()->GetPage( 0 ) )
{
const SdrPage& rSdrPage( *(p_rDoc.GetDrawModel()->GetPage( 0 )) );
SdrObjListIter aIter( rSdrPage, IM_FLAT );
while( aIter.IsMore() )
{
SdrObject* pObj( aIter.Next() );
if ( !dynamic_cast<SwVirtFlyDrawObj*>(pObj) &&
!dynamic_cast<SwFlyDrawObj*>(pObj) )
{
SwDrawContact* pDrawContact =
dynamic_cast<SwDrawContact*>(::GetUserCall( pObj ));
if ( pDrawContact )
{
SwAnchoredDrawObject* pAnchoredDrawObj =
dynamic_cast<SwAnchoredDrawObject*>(pDrawContact->GetAnchoredObj( pObj ));
// error handling
{
if ( !pAnchoredDrawObj )
{
OSL_FAIL( "<docfunc::AllDrawObjsOnPage() - missing anchored draw object" );
bAllDrawObjsOnPage = false;
break;
}
}
if ( pAnchoredDrawObj->NotYetPositioned() )
{
// The drawing object isn't yet layouted.
// Thus, it isn't known, if all drawing objects are on page.
bAllDrawObjsOnPage = false;
break;
}
else if ( pAnchoredDrawObj->IsOutsidePage() )
{
bAllDrawObjsOnPage = false;
break;
}
}
else
{
// contact object of drawing object doesn't exists.
// Thus, the drawing object isn't yet positioned.
// Thus, it isn't known, if all drawing objects are on page.
bAllDrawObjsOnPage = false;
break;
}
}
}
}
return bAllDrawObjsOnPage;
}
}
void SwDoc::SetDrawDefaults()
{
mbSetDrawDefaults = true;
UpdateDrawDefaults();
}
void SwDoc::UpdateDrawDefaults()
{
// drawing layer defaults that are set for new documents (if InitNew was called)
if ( mpDrawModel && mbSetDrawDefaults )
mpDrawModel->SetDrawingLayerPoolDefaults();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */