Version 3.6.0.2, tag libreoffice-3.6.0.2
[LibreOffice.git] / svx / source / svdraw / svdoutlinercache.cxx
blobee600c1694ce07dc98023ff14a036650c12e55d1
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*************************************************************************
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6 * Copyright 2000, 2010 Oracle and/or its affiliates.
8 * OpenOffice.org - a multi-platform office productivity suite
10 * This file is part of OpenOffice.org.
12 * OpenOffice.org is free software: you can redistribute it and/or modify
13 * it under the terms of the GNU Lesser General Public License version 3
14 * only, as published by the Free Software Foundation.
16 * OpenOffice.org is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Lesser General Public License version 3 for more details
20 * (a copy is included in the LICENSE file that accompanied this code).
22 * You should have received a copy of the GNU Lesser General Public License
23 * version 3 along with OpenOffice.org. If not, see
24 * <http://www.openoffice.org/license.html>
25 * for a copy of the LGPLv3 License.
27 ************************************************************************/
31 #include "svdoutlinercache.hxx"
32 #include <svx/svdoutl.hxx>
33 #include <svx/svdmodel.hxx>
35 extern SdrOutliner* SdrMakeOutliner( sal_uInt16 nOutlinerMode, SdrModel* pModel );
37 SdrOutlinerCache::SdrOutlinerCache( SdrModel* pModel )
38 : mpModel( pModel ),
39 mpModeOutline( NULL ),
40 mpModeText( NULL )
44 SdrOutliner* SdrOutlinerCache::createOutliner( sal_uInt16 nOutlinerMode )
46 SdrOutliner* pOutliner = NULL;
48 if( (OUTLINERMODE_OUTLINEOBJECT == nOutlinerMode) && mpModeOutline )
50 pOutliner = mpModeOutline;
51 mpModeOutline = NULL;
53 else if( (OUTLINERMODE_TEXTOBJECT == nOutlinerMode) && mpModeText )
55 pOutliner = mpModeText;
56 mpModeText = NULL;
58 else
60 pOutliner = SdrMakeOutliner( nOutlinerMode, mpModel );
61 Outliner& aDrawOutliner = mpModel->GetDrawOutliner();
62 pOutliner->SetCalcFieldValueHdl( aDrawOutliner.GetCalcFieldValueHdl() );
65 return pOutliner;
68 SdrOutlinerCache::~SdrOutlinerCache()
70 if( mpModeOutline )
72 delete mpModeOutline;
73 mpModeOutline = NULL;
76 if( mpModeText )
78 delete mpModeText;
79 mpModeText = NULL;
83 void SdrOutlinerCache::disposeOutliner( SdrOutliner* pOutliner )
85 if( pOutliner )
87 sal_uInt16 nOutlMode = pOutliner->GetOutlinerMode();
89 if( (OUTLINERMODE_OUTLINEOBJECT == nOutlMode) && (NULL == mpModeOutline) )
91 mpModeOutline = pOutliner;
92 pOutliner->Clear();
93 pOutliner->SetVertical( false );
95 // Deregister on outliner, might be reused from outliner cache
96 pOutliner->SetNotifyHdl( Link() );
98 else if( (OUTLINERMODE_TEXTOBJECT == nOutlMode) && (NULL == mpModeText) )
100 mpModeText = pOutliner;
101 pOutliner->Clear();
102 pOutliner->SetVertical( false );
104 // Deregister on outliner, might be reused from outliner cache
105 pOutliner->SetNotifyHdl( Link() );
107 else
109 delete pOutliner;
115 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */