diff options
Diffstat (limited to 'inc/bf_sw/swatrset.hxx')
-rw-r--r-- | inc/bf_sw/swatrset.hxx | 328 |
1 files changed, 328 insertions, 0 deletions
diff --git a/inc/bf_sw/swatrset.hxx b/inc/bf_sw/swatrset.hxx new file mode 100644 index 000000000..3e6759e40 --- /dev/null +++ b/inc/bf_sw/swatrset.hxx @@ -0,0 +1,328 @@ +/* -*- 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 _SWATRSET_HXX +#define _SWATRSET_HXX + +#include <bf_svtools/bf_solar.h> + +#include <tools/mempool.hxx> +#include <bf_svtools/itemset.hxx> +#include <bf_svtools/itempool.hxx> +class OutputDevice; +namespace binfilter { +class SfxBoolItem; +class SvxMacroItem; +class SwModify; +class SwDoc; + + + +class SvxPostureItem; +class SvxWeightItem; +class SvxShadowedItem; +class SvxAutoKernItem; +class SvxWordLineModeItem; +class SvxContourItem; +class SvxKerningItem; +class SvxUnderlineItem; +class SvxCrossedOutItem; +class SvxFontHeightItem; +class SvxPropSizeItem; +class SvxFontItem; +class SvxColorItem; +class SvxCharSetColorItem; +class SvxLanguageItem; +class SvxEscapementItem; +class SvxCaseMapItem; +class SvxNoHyphenItem; +class SvxBlinkItem; +class SvxEmphasisMarkItem; +class SvxTwoLinesItem; +class SvxCharScaleWidthItem; +class SvxCharRotateItem; +class SvxCharReliefItem; + +// Frame-Attribute +class SwFmtFillOrder; +class SwFmtFrmSize; +class SvxPaperBinItem; +class SvxLRSpaceItem; +class SvxULSpaceItem; +class SwFmtCntnt; +class SwFmtHeader; +class SwFmtFooter; +class SvxPrintItem; +class SvxOpaqueItem; +class SvxProtectItem; +class SwFmtSurround; +class SwFmtVertOrient; +class SwFmtHoriOrient; +class SwFmtAnchor; +class SvxBoxItem; +class SvxBrushItem; +class SvxShadowItem; +class SwFmtPageDesc; +class SvxFmtBreakItem; +class SwFmtCol; + +class SvxFmtKeepItem; +class SwFmtURL; +class SwFmtLineNumber; +class SwFmtEditInReadonly; +class SwFmtLayoutSplit; +class SwFmtChain; +class SwFmtFtnAtTxtEnd; +class SwFmtEndAtTxtEnd; +class SwFmtNoBalancedColumns; +class SvxFrameDirectionItem; +class SwTextGridItem; +class SwHeaderAndFooterEatSpacingItem; + +// Grafik-Attribute +class SwMirrorGrf; +class SwCropGrf; +class SwRotationGrf; +class SwLuminanceGrf; +class SwContrastGrf; +class SwChannelRGrf; +class SwChannelGGrf; +class SwChannelBGrf; +class SwGammaGrf; +class SwInvertGrf; +class SwTransparencyGrf; +class SwDrawModeGrf; + +// Paragraph-Attribute +class SvxLineSpacingItem; +class SvxAdjustItem; +class SvxFmtSplitItem; +class SwRegisterItem; +class SwNumRuleItem; +class SvxWidowsItem; +class SvxOrphansItem; +class SvxTabStopItem; +class SvxHyphenZoneItem; +class SwFmtDrop; +class SvxScriptSpaceItem; +class SvxHangingPunctuationItem; +class SvxForbiddenRuleItem; +class SvxParaVertAlignItem; +class SvxParaGridItem; +class SwParaConnectBorderItem; + +// TabellenBox-Attribute +class SwTblBoxNumFormat; +class SwTblBoxFormula; +class SwTblBoxValue; + +#ifndef INLINE +#define INLINE inline +#endif + +class SwAttrPool : public SfxItemPool +{ + friend void _InitCore(); // fuers anlegen/zerstoeren der + friend void _FinitCore(); // Versionsmaps + static USHORT* pVersionMap1; + static USHORT* pVersionMap2; + static USHORT* pVersionMap3; + static USHORT* pVersionMap4; + + SwDoc* pDoc; + +public: + SwAttrPool( SwDoc* pDoc ); + + SwDoc* GetDoc() { return pDoc; } + const SwDoc* GetDoc() const { return pDoc; } + + static USHORT* GetVersionMap1() { return pVersionMap1; } + static USHORT* GetVersionMap2() { return pVersionMap2; } + static USHORT* GetVersionMap3() { return pVersionMap3; } + static USHORT* GetVersionMap6() { return pVersionMap4; } +}; + + +class SwAttrSet : public SfxItemSet +{ + // Pointer fuers Modify-System + SwAttrSet *pOldSet, *pNewSet; + + // Notification-Callback + virtual void Changed( const SfxPoolItem& rOld, const SfxPoolItem& rNew ); + + void PutChgd( const SfxPoolItem& rI ) { SfxItemSet::PutDirect( rI ); } +public: + SwAttrSet( SwAttrPool&, USHORT nWhich1, USHORT nWhich2 ); + SwAttrSet( SwAttrPool&, const USHORT* nWhichPairTable ); + SwAttrSet( const SwAttrSet& ); + + int Put_BC( const SfxPoolItem& rAttr, SwAttrSet* pOld, SwAttrSet* pNew ); + int Put_BC( const SfxItemSet& rSet, SwAttrSet* pOld, SwAttrSet* pNew ); + + // ein Item oder einen Bereich loeschen + USHORT ClearItem_BC( USHORT nWhich, SwAttrSet* pOld, SwAttrSet* pNew ); + USHORT ClearItem_BC( USHORT nWhich1, USHORT nWhich2, + SwAttrSet* pOld = 0, SwAttrSet* pNew = 0 ); + + int Intersect_BC( const SfxItemSet& rSet, SwAttrSet* pOld, SwAttrSet* pNew ); + + SwAttrPool* GetPool() const { return (SwAttrPool*)SfxItemSet::GetPool(); } + + // kopiere die Attribute ggfs. ueber Dokumentgrenzen + void CopyToModify( SwModify& rMod ) const; + + // ---------------------------------------------------------------- + // Sonderbehandlung fuer einige Attribute + // Setze den Modify-Pointer (alten pDefinedIn) bei folgenden Attributen: + // - SwFmtDropCaps + // - SwFmtPageDesc + // (Wird beim Einfuegen in Formate/Nodes gerufen) + void SetModifyAtAttr( const SwModify* pModify ); + + // Das Doc wird jetzt am SwAttrPool gesetzt. Dadurch hat man es immer + // im Zugriff. + const SwDoc *GetDoc() const { return GetPool()->GetDoc(); } + SwDoc *GetDoc() { return GetPool()->GetDoc(); } + + // GetMethoden: das Bool gibt an, ob nur im Set (FALSE) oder auch in + // den Parents gesucht werden soll. Wird nichts gefunden, + // wird das deflt. Attribut returnt. + // Charakter-Attribute - impl. steht im charatr.hxx + // AMA 12.10.94: Umstellung von SwFmt... auf Svx... + inline const SvxPostureItem &GetPosture( BOOL = TRUE ) const; + inline const SvxWeightItem &GetWeight( BOOL = TRUE ) const; + inline const SvxShadowedItem &GetShadowed( BOOL = TRUE ) const; + inline const SvxAutoKernItem &GetAutoKern( BOOL = TRUE ) const; + inline const SvxWordLineModeItem &GetWordLineMode( BOOL = TRUE ) const; + inline const SvxContourItem &GetContour( BOOL = TRUE ) const; + inline const SvxKerningItem &GetKerning( BOOL = TRUE ) const; + inline const SvxUnderlineItem &GetUnderline( BOOL = TRUE ) const; + inline const SvxCrossedOutItem &GetCrossedOut( BOOL = TRUE ) const; + inline const SvxFontHeightItem &GetSize( BOOL = TRUE ) const; + inline const SvxPropSizeItem &GetPropSize( BOOL = TRUE ) const; + INLINE const SvxFontItem &GetFont( BOOL = TRUE ) const; + inline const SvxColorItem &GetColor( BOOL = TRUE ) const; + inline const SvxCharSetColorItem &GetCharSetColor( BOOL = TRUE ) const; + inline const SvxLanguageItem &GetLanguage( BOOL = TRUE ) const; + inline const SvxEscapementItem &GetEscapement( BOOL = TRUE ) const; + inline const SvxCaseMapItem &GetCaseMap( BOOL = TRUE ) const; + inline const SvxNoHyphenItem &GetNoHyphenHere( BOOL = TRUE ) const; + inline const SvxBlinkItem &GetBlink( BOOL = TRUE ) const; + inline const SvxBrushItem &GetChrBackground( BOOL = TRUE ) const; + inline const SvxFontItem &GetCJKFont( BOOL = TRUE ) const; + inline const SvxFontHeightItem &GetCJKSize( BOOL = TRUE ) const; + inline const SvxLanguageItem &GetCJKLanguage( BOOL = TRUE ) const; + inline const SvxPostureItem &GetCJKPosture( BOOL = TRUE ) const; + inline const SvxWeightItem &GetCJKWeight( BOOL = TRUE ) const; + inline const SvxFontItem &GetCTLFont( BOOL = TRUE ) const; + inline const SvxFontHeightItem &GetCTLSize( BOOL = TRUE ) const; + inline const SvxLanguageItem &GetCTLLanguage( BOOL = TRUE ) const; + inline const SvxPostureItem &GetCTLPosture( BOOL = TRUE ) const; + inline const SvxWeightItem &GetCTLWeight( BOOL = TRUE ) const; + inline const SfxBoolItem &GetWritingDirection( BOOL = TRUE ) const; + inline const SvxEmphasisMarkItem &GetEmphasisMark( BOOL = TRUE ) const; + inline const SvxTwoLinesItem &Get2Lines( BOOL = TRUE ) const; + inline const SvxCharScaleWidthItem &GetCharScaleW( BOOL = TRUE ) const; + inline const SvxCharRotateItem &GetCharRotate( BOOL = TRUE ) const; + inline const SvxCharReliefItem &GetCharRelief( BOOL = TRUE ) const; + + // Frame-Attribute - impl. steht im frmatr.hxx + INLINE const SwFmtFillOrder &GetFillOrder( BOOL = TRUE ) const; + INLINE const SwFmtFrmSize &GetFrmSize( BOOL = TRUE ) const; + INLINE const SvxPaperBinItem &GetPaperBin( BOOL = TRUE ) const; + INLINE const SvxLRSpaceItem &GetLRSpace( BOOL = TRUE ) const; + INLINE const SvxULSpaceItem &GetULSpace( BOOL = TRUE ) const; + INLINE const SwFmtCntnt &GetCntnt( BOOL = TRUE ) const; + INLINE const SwFmtHeader &GetHeader( BOOL = TRUE ) const; + INLINE const SwFmtFooter &GetFooter( BOOL = TRUE ) const; + INLINE const SvxPrintItem &GetPrint( BOOL = TRUE ) const; + INLINE const SvxOpaqueItem &GetOpaque( BOOL = TRUE ) const; + INLINE const SvxProtectItem &GetProtect( BOOL = TRUE ) const; + INLINE const SwFmtSurround &GetSurround( BOOL = TRUE ) const; + INLINE const SwFmtVertOrient &GetVertOrient( BOOL = TRUE ) const; + INLINE const SwFmtHoriOrient &GetHoriOrient( BOOL = TRUE ) const; + INLINE const SwFmtAnchor &GetAnchor( BOOL = TRUE ) const; + INLINE const SvxBoxItem &GetBox( BOOL = TRUE ) const; + INLINE const SvxFmtKeepItem &GetKeep( BOOL = TRUE ) const; + INLINE const SvxBrushItem &GetBackground( BOOL = TRUE ) const; + INLINE const SvxShadowItem &GetShadow( BOOL = TRUE ) const; + INLINE const SwFmtPageDesc &GetPageDesc( BOOL = TRUE ) const; + INLINE const SvxFmtBreakItem &GetBreak( BOOL = TRUE ) const; + INLINE const SwFmtCol &GetCol( BOOL = TRUE ) const; + INLINE const SvxMacroItem &GetMacro( BOOL = TRUE ) const; + INLINE const SwFmtURL &GetURL( BOOL = TRUE ) const; + INLINE const SwFmtEditInReadonly &GetEditInReadonly( BOOL = TRUE ) const; + INLINE const SwFmtLayoutSplit &GetLayoutSplit( BOOL = TRUE ) const; + INLINE const SwFmtChain &GetChain( BOOL = TRUE ) const; + INLINE const SwFmtLineNumber &GetLineNumber( BOOL = TRUE ) const; + INLINE const SwFmtFtnAtTxtEnd &GetFtnAtTxtEnd( BOOL = TRUE ) const; + INLINE const SwFmtEndAtTxtEnd &GetEndAtTxtEnd( BOOL = TRUE ) const; + INLINE const SwFmtNoBalancedColumns &GetBalancedColumns( BOOL = TRUE ) const; + INLINE const SvxFrameDirectionItem &GetFrmDir( BOOL = TRUE ) const; + INLINE const SwTextGridItem &GetTextGrid( BOOL = TRUE ) const; + inline const SwHeaderAndFooterEatSpacingItem &GetHeaderAndFooterEatSpacing( BOOL = TRUE ) const; + + // Grafik-Attribute - impl. steht im grfatr.hxx + INLINE const SwMirrorGrf &GetMirrorGrf( BOOL = TRUE ) const; + inline const SwCropGrf &GetCropGrf( BOOL = TRUE ) const; + inline const SwRotationGrf &GetRotationGrf(BOOL = TRUE ) const; + inline const SwLuminanceGrf &GetLuminanceGrf(BOOL = TRUE ) const; + inline const SwContrastGrf &GetContrastGrf(BOOL = TRUE ) const; + inline const SwChannelRGrf &GetChannelRGrf(BOOL = TRUE ) const; + inline const SwChannelGGrf &GetChannelGGrf(BOOL = TRUE ) const; + inline const SwChannelBGrf &GetChannelBGrf(BOOL = TRUE ) const; + inline const SwGammaGrf &GetGammaGrf(BOOL = TRUE ) const; + inline const SwInvertGrf &GetInvertGrf(BOOL = TRUE ) const; + inline const SwTransparencyGrf &GetTransparencyGrf(BOOL = TRUE ) const; + inline const SwDrawModeGrf &GetDrawModeGrf(BOOL = TRUE ) const; + + // Paragraph-Attribute - impl. steht im paratr.hxx + inline const SvxLineSpacingItem &GetLineSpacing( BOOL = TRUE ) const; + inline const SvxAdjustItem &GetAdjust( BOOL = TRUE ) const; + inline const SvxFmtSplitItem &GetSplit( BOOL = TRUE ) const; + inline const SwRegisterItem &GetRegister( BOOL = TRUE ) const; + inline const SwNumRuleItem &GetNumRule( BOOL = TRUE ) const; + inline const SvxWidowsItem &GetWidows( BOOL = TRUE ) const; + inline const SvxOrphansItem &GetOrphans( BOOL = TRUE ) const; + inline const SvxTabStopItem &GetTabStops( BOOL = TRUE ) const; + inline const SvxHyphenZoneItem &GetHyphenZone( BOOL = TRUE ) const; + inline const SwFmtDrop &GetDrop( BOOL = TRUE ) const; + inline const SvxScriptSpaceItem &GetScriptSpace(BOOL = TRUE) const; + inline const SvxHangingPunctuationItem &GetHangingPunctuation(BOOL = TRUE) const; + inline const SvxForbiddenRuleItem &GetForbiddenRule(BOOL = TRUE) const; + inline const SvxParaVertAlignItem &GetParaVertAlign(BOOL = TRUE) const; + inline const SvxParaGridItem &GetParaGrid(BOOL = TRUE) const; + inline const SwParaConnectBorderItem &GetParaConnectBorder(BOOL = TRUE ) const; + + // TabellenBox-Attribute - impl. steht im cellatr.hxx + INLINE const SwTblBoxNumFormat &GetTblBoxNumFmt( BOOL = TRUE ) const; + INLINE const SwTblBoxFormula &GetTblBoxFormula( BOOL = TRUE ) const; + INLINE const SwTblBoxValue &GetTblBoxValue( BOOL = TRUE ) const; + + DECL_FIXEDMEMPOOL_NEWDEL(SwAttrSet) +}; + +//Helper for filters to find true lineheight of a font +long AttrSetToLineHeight(const SwDoc &rDoc, const SwAttrSet &rSet, + const OutputDevice &rOut, sal_Int16 nScript); +} //namespace binfilter +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |