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.
167 lines
6.4 KiB
C++
167 lines
6.4 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* 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 .
|
|
*/
|
|
#ifndef _SECTFRM_HXX
|
|
#define _SECTFRM_HXX
|
|
#include <tools/mempool.hxx>
|
|
|
|
#include "layfrm.hxx"
|
|
#include "flowfrm.hxx"
|
|
#include <set>
|
|
|
|
class SwSection;
|
|
class SwSectionFmt;
|
|
class SwAttrSetChg;
|
|
class SwFtnContFrm;
|
|
class SwLayouter;
|
|
|
|
#define FINDMODE_ENDNOTE 1
|
|
#define FINDMODE_LASTCNT 2
|
|
#define FINDMODE_MYLAST 4
|
|
|
|
class SwSectionFrm: public SwLayoutFrm, public SwFlowFrm
|
|
{
|
|
SwSection* pSection;
|
|
bool bFtnAtEnd; // footnotes at the end of section
|
|
bool bEndnAtEnd; // endnotes at the end of section
|
|
bool bCntntLock; // content locked
|
|
bool bOwnFtnNum; // special numbering of footnotes
|
|
bool bFtnLock; // ftn, don't leave this section bwd
|
|
|
|
void _UpdateAttr( const SfxPoolItem*, const SfxPoolItem*, sal_uInt8 &,
|
|
SwAttrSetChg *pa = 0, SwAttrSetChg *pb = 0 );
|
|
void _Cut( sal_Bool bRemove );
|
|
// Is there a FtnContainer?
|
|
// An empty sectionfrm without FtnCont is superfluous
|
|
sal_Bool IsSuperfluous() const { return !ContainsAny() && !ContainsFtnCont(); }
|
|
void CalcFtnAtEndFlag();
|
|
void CalcEndAtEndFlag();
|
|
const SwSectionFmt* _GetEndSectFmt() const;
|
|
bool IsEndnoteAtMyEnd() const;
|
|
protected:
|
|
virtual void MakeAll();
|
|
virtual sal_Bool ShouldBwdMoved( SwLayoutFrm *pNewUpper, sal_Bool bHead, sal_Bool &rReformat );
|
|
virtual void Format( const SwBorderAttrs *pAttrs = 0 );
|
|
virtual void Modify( const SfxPoolItem*, const SfxPoolItem* );
|
|
virtual void SwClientNotify( const SwModify&, const SfxHint& );
|
|
|
|
public:
|
|
SwSectionFrm( SwSection &, SwFrm* ); //Inhalt wird nicht erzeugt!
|
|
SwSectionFrm( SwSectionFrm &, sal_Bool bMaster );//_Nur_ zum Erzeugen von Master/Follows
|
|
virtual ~SwSectionFrm();
|
|
|
|
void Init();
|
|
virtual void CheckDirection( sal_Bool bVert );
|
|
|
|
virtual void PaintSubsidiaryLines( const SwPageFrm*, const SwRect& ) const;
|
|
|
|
virtual void Cut();
|
|
virtual void Paste( SwFrm* pParent, SwFrm* pSibling = 0 );
|
|
|
|
inline const SwSectionFrm *GetFollow() const;
|
|
inline SwSectionFrm *GetFollow();
|
|
SwSectionFrm* FindMaster() const;
|
|
|
|
SwCntntFrm *FindLastCntnt( sal_uInt8 nMode = 0 );
|
|
inline const SwCntntFrm *FindLastCntnt( sal_uInt8 nMode = 0 ) const;
|
|
inline SwSection* GetSection() { return pSection; }
|
|
inline const SwSection* GetSection() const { return pSection; }
|
|
inline void ColLock() { bColLocked = sal_True; }
|
|
inline void ColUnlock() { bColLocked = sal_False; }
|
|
|
|
void CalcFtnCntnt();
|
|
void SimpleFormat();
|
|
sal_Bool IsDescendantFrom( const SwSectionFmt* pSect ) const;
|
|
sal_Bool HasToBreak( const SwFrm* pFrm ) const;
|
|
void MergeNext( SwSectionFrm* pNxt );
|
|
//Zerlegt den pFrm umgebenden SectionFrm in zwei Teile,
|
|
//pFrm an den Anfang des 2. Teils
|
|
sal_Bool SplitSect( SwFrm* pFrm, sal_Bool bApres );
|
|
void DelEmpty( sal_Bool bRemove ); // wie Cut(), Follow-Verkettung wird aber mitgepflegt
|
|
sal_Bool IsToIgnore() const // Keine Groesse, kein Inhalt, muss ignoriert werden
|
|
{ return !Frm().Height() && !ContainsCntnt(); }
|
|
SwFtnContFrm* ContainsFtnCont( const SwFtnContFrm* pCont = NULL ) const;
|
|
sal_Bool Growable() const;
|
|
SwTwips _Shrink( SwTwips, sal_Bool bTst );
|
|
SwTwips _Grow ( SwTwips, sal_Bool bTst );
|
|
|
|
// A sectionfrm has to maximize, if he has a follow or a ftncontainer at
|
|
// the end of the page. A superfluous follow will be ignored,
|
|
// if bCheckFollow is set.
|
|
sal_Bool ToMaximize( sal_Bool bCheckFollow ) const;
|
|
inline sal_Bool _ToMaximize() const
|
|
{ if( !pSection ) return sal_False; return ToMaximize( sal_False ); }
|
|
sal_Bool MoveAllowed( const SwFrm* ) const;
|
|
sal_Bool CalcMinDiff( SwTwips& rMinDiff ) const;
|
|
// Uebergibt man kein bOverSize bzw. sal_False, so ist der Returnwert
|
|
// >0 fuer Undersized-Frames, ==0 sonst.
|
|
// Uebergibt man sal_True, so kann es auch einen negativen Returnwert geben,
|
|
// wenn der SectionFrm nicht vollstaendig ausgefuellt ist, was z.B. bei
|
|
// SectionFrm mit Follow meist vorkommt. Benoetigt wird dies im
|
|
// FormatWidthCols, um "Luft" aus den Spalten zu lassen.
|
|
long Undersize( sal_Bool bOverSize = sal_False );
|
|
// Groesse an die Umgebung anpassen
|
|
void _CheckClipping( sal_Bool bGrow, sal_Bool bMaximize );
|
|
|
|
void InvalidateFtnPos();
|
|
void CollectEndnotes( SwLayouter* pLayouter );
|
|
const SwSectionFmt* GetEndSectFmt() const
|
|
{ if( IsEndnAtEnd() ) return _GetEndSectFmt(); return NULL; }
|
|
|
|
static void MoveCntntAndDelete( SwSectionFrm* pDel, sal_Bool bSave );
|
|
|
|
bool IsBalancedSection() const;
|
|
|
|
virtual void dumpAsXmlAttributes(xmlTextWriterPtr writer);
|
|
|
|
bool IsFtnAtEnd() const { return bFtnAtEnd; }
|
|
bool IsEndnAtEnd() const { return bEndnAtEnd; }
|
|
bool IsAnyNoteAtEnd() const { return bFtnAtEnd || bEndnAtEnd; }
|
|
bool AreNotesAtEnd() const { return bFtnAtEnd && bEndnAtEnd; }
|
|
|
|
void SetCntntLock( bool bNew ) { bCntntLock = bNew; }
|
|
bool IsCntntLocked() const { return bCntntLock; }
|
|
|
|
bool IsOwnFtnNum() const { return bOwnFtnNum; }
|
|
|
|
void SetFtnLock( bool bNew ) { bFtnLock = bNew; }
|
|
bool IsFtnLock() const { return bFtnLock; }
|
|
|
|
DECL_FIXEDMEMPOOL_NEWDEL(SwSectionFrm)
|
|
};
|
|
|
|
class SwDestroyList : public std::set<SwSectionFrm*> {};
|
|
|
|
inline const SwSectionFrm *SwSectionFrm::GetFollow() const
|
|
{
|
|
return (const SwSectionFrm*)SwFlowFrm::GetFollow();
|
|
}
|
|
inline SwSectionFrm *SwSectionFrm::GetFollow()
|
|
{
|
|
return (SwSectionFrm*)SwFlowFrm::GetFollow();
|
|
}
|
|
inline const SwCntntFrm *SwSectionFrm::FindLastCntnt( sal_uInt8 nMode ) const
|
|
{
|
|
return ((SwSectionFrm*)this)->FindLastCntnt( nMode );
|
|
}
|
|
|
|
|
|
#endif //_SECTFRM_HXX
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|