| /************************************************************** |
| * |
| * 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 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| #ifndef _FORMAT_HXX |
| #define _FORMAT_HXX |
| |
| #include <tools/solar.h> |
| #include "swdllapi.h" |
| #include <errhdl.hxx> // fuer ASSERT |
| #include <swatrset.hxx> // fuer SfxItemPool/-Set, Attr forward decl. |
| #include <calbck.hxx> // fuer SwModify |
| #include <hintids.hxx> |
| |
| class IDocumentSettingAccess; |
| class IDocumentDrawModelAccess; |
| class IDocumentLayoutAccess; |
| class IDocumentTimerAccess; |
| class IDocumentFieldsAccess; |
| class IDocumentChartDataProviderAccess; |
| class SwDoc; |
| |
| class SW_DLLPUBLIC SwFmt : public SwModify |
| { |
| String aFmtName; |
| SwAttrSet aSet; |
| |
| sal_uInt16 nWhichId; |
| sal_uInt16 nFmtId; // Format-ID fuer Lesen/Schreiben |
| sal_uInt16 nPoolFmtId; // Id-fuer "automatich" erzeugte Formate |
| // (ist keine harte Attributierung !!) |
| sal_uInt16 nPoolHelpId; // HelpId fuer diese Pool-Vorlage |
| sal_uInt8 nPoolHlpFileId; // FilePos ans Doc auf die Vorlagen-Hilfen |
| sal_Bool bWritten : 1; // sal_True: bereits geschrieben |
| sal_Bool bAutoFmt : 1; // sal_False: es handelt sich um eine Vorlage |
| // ist dflt immer auf sal_True ! |
| sal_Bool bFmtInDTOR : 1; // sal_True: das Format wird geloscht. Damit man in |
| // der FmtChg-Message das erkennen kann!!! |
| sal_Bool bAutoUpdateFmt : 1; // sal_True: am Format werden die Attribute |
| // eines kompletten Absatzes gesetzt (UI-seitig!) |
| |
| protected: |
| SwFmt( SwAttrPool& rPool, const sal_Char* pFmtNm, |
| const sal_uInt16* pWhichRanges, SwFmt *pDrvdFrm, sal_uInt16 nFmtWhich ); |
| SwFmt( SwAttrPool& rPool, const String &rFmtNm, const sal_uInt16* pWhichRanges, |
| SwFmt *pDrvdFrm, sal_uInt16 nFmtWhich ); |
| SwFmt( const SwFmt& rFmt ); |
| virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNewValue ); |
| |
| public: |
| TYPEINFO(); //Bereits in Basisklasse Client drin. |
| |
| virtual ~SwFmt(); |
| SwFmt &operator=(const SwFmt&); |
| |
| // fuer die Abfrage der Writer-Funktionen |
| sal_uInt16 Which() const { return nWhichId; } |
| |
| // erfrage vom Format Informationen |
| virtual sal_Bool GetInfo( SfxPoolItem& ) const; |
| |
| // kopiere Attribute; auch ueber Dokumentgrenzen hinweg |
| void CopyAttrs( const SwFmt&, sal_Bool bReplace=sal_True ); |
| |
| // loesche alle Attribute, die nicht in rFmt stehen |
| void DelDiffs( const SfxItemSet& rSet ); |
| void DelDiffs( const SwFmt& rFmt ) { DelDiffs( rFmt.GetAttrSet() ); } |
| |
| // Umhaengen des Formats (0 = Default) |
| sal_Bool SetDerivedFrom(SwFmt *pDerivedFrom = 0); |
| |
| // Ist bInParents sal_False, |
| // wird nur in diesem Format nach dem Attribut gesucht. |
| inline const SfxPoolItem& GetFmtAttr( sal_uInt16 nWhich, |
| sal_Bool bInParents = sal_True ) const; |
| inline SfxItemState GetItemState( sal_uInt16 nWhich, sal_Bool bSrchInParent = sal_True, |
| const SfxPoolItem **ppItem = 0 ) const; |
| // --> OD 2008-03-03 #refactorlists# |
| // methods renamed and made virtual |
| virtual sal_Bool SetFmtAttr( const SfxPoolItem& rAttr ); |
| virtual sal_Bool SetFmtAttr( const SfxItemSet& rSet ); |
| virtual sal_Bool ResetFmtAttr( sal_uInt16 nWhich1, sal_uInt16 nWhich2 = 0 ); |
| // <-- |
| |
| // --> OD 2007-01-24 #i73790# |
| // Method renamed and made virtual |
| // Nimmt alle Hints aus dem Delta-Array, |
| // liefert die Anzahl der geloeschten Hints |
| virtual sal_uInt16 ResetAllFmtAttr(); |
| // <-- |
| |
| inline SwFmt* DerivedFrom() const { return (SwFmt*)GetRegisteredIn(); } |
| inline sal_Bool IsDefault() const { return DerivedFrom() == 0; } |
| |
| inline const String& GetName() const { return aFmtName; } |
| void SetName( const String& rNewName, sal_Bool bBroadcast=sal_False ); |
| inline void SetName( const sal_Char* pNewName, |
| sal_Bool bBroadcast=sal_False); |
| |
| // zur Abfrage des Attribute Arrays |
| inline const SwAttrSet& GetAttrSet() const { return aSet; } |
| |
| // Das Doc wird jetzt am SwAttrPool gesetzt. Dadurch hat man es immer |
| // im Zugriff. |
| const SwDoc *GetDoc() const { return aSet.GetDoc(); } |
| SwDoc *GetDoc() { return aSet.GetDoc(); } |
| |
| /** Provides access to the document settings interface |
| */ |
| const IDocumentSettingAccess* getIDocumentSettingAccess() const; |
| |
| /** Provides access to the document draw model interface |
| */ |
| const IDocumentDrawModelAccess* getIDocumentDrawModelAccess() const; |
| IDocumentDrawModelAccess* getIDocumentDrawModelAccess(); |
| |
| /** Provides access to the document layout interface |
| */ |
| const IDocumentLayoutAccess* getIDocumentLayoutAccess() const; |
| IDocumentLayoutAccess* getIDocumentLayoutAccess(); |
| |
| /** Provides access to the document idle timer interface |
| */ |
| IDocumentTimerAccess* getIDocumentTimerAccess(); |
| |
| /** Provides access to the document idle timer interface |
| */ |
| IDocumentFieldsAccess* getIDocumentFieldsAccess(); |
| |
| /** gives access to the chart data-provider |
| */ |
| IDocumentChartDataProviderAccess* getIDocumentChartDataProviderAccess(); |
| |
| // erfragen und setzen der Poolvorlagen-Id's |
| sal_uInt16 GetPoolFmtId() const { return nPoolFmtId; } |
| void SetPoolFmtId( sal_uInt16 nId ) { nPoolFmtId = nId; } |
| |
| // erfragen und setzen der Hilfe-Id's fuer die Document-Vorlagen |
| sal_uInt16 GetPoolHelpId() const { return nPoolHelpId; } |
| void SetPoolHelpId( sal_uInt16 nId ) { nPoolHelpId = nId; } |
| sal_uInt8 GetPoolHlpFileId() const { return nPoolHlpFileId; } |
| void SetPoolHlpFileId( sal_uInt8 nId ) { nPoolHlpFileId = nId; } |
| // erfrage die Attribut-Beschreibung, returnt den reingereichten String |
| void GetPresentation( SfxItemPresentation ePres, |
| SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String &rText ) const |
| { aSet.GetPresentation( ePres, eCoreMetric, ePresMetric, rText ); } |
| // Das Format-ID fuer Lesen/Schreiben: |
| void ResetWritten() { bWritten = sal_False; } |
| |
| // Abfragen/Setzen vom AutoFmt-Flag |
| sal_Bool IsAuto() const { return bAutoFmt; } |
| void SetAuto( sal_Bool bNew = sal_False ) { bAutoFmt = bNew; } |
| |
| // Abfragen/Setzen vom bAutoUpdateFmt-Flag |
| sal_Bool IsAutoUpdateFmt() const { return bAutoUpdateFmt; } |
| void SetAutoUpdateFmt( sal_Bool bNew = sal_True ) { bAutoUpdateFmt = bNew; } |
| |
| sal_Bool IsFmtInDTOR() const { return bFmtInDTOR; } |
| |
| // GetMethoden: das Bool gibt an, ob nur im Set (sal_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( sal_Bool = sal_True ) const; |
| inline const SvxWeightItem &GetWeight( sal_Bool = sal_True ) const; |
| inline const SvxShadowedItem &GetShadowed( sal_Bool = sal_True ) const; |
| inline const SvxAutoKernItem &GetAutoKern( sal_Bool = sal_True ) const; |
| inline const SvxWordLineModeItem &GetWordLineMode( sal_Bool = sal_True ) const; |
| inline const SvxContourItem &GetContour( sal_Bool = sal_True ) const; |
| inline const SvxKerningItem &GetKerning( sal_Bool = sal_True ) const; |
| inline const SvxUnderlineItem &GetUnderline( sal_Bool = sal_True ) const; |
| inline const SvxOverlineItem &GetOverline( sal_Bool = sal_True ) const; |
| inline const SvxCrossedOutItem &GetCrossedOut( sal_Bool = sal_True ) const; |
| inline const SvxFontHeightItem &GetSize( sal_Bool = sal_True ) const; |
| inline const SvxPropSizeItem &GetPropSize( sal_Bool = sal_True ) const; |
| inline const SvxFontItem &GetFont( sal_Bool = sal_True ) const; |
| inline const SvxColorItem &GetColor( sal_Bool = sal_True ) const; |
| inline const SvxCharSetColorItem &GetCharSetColor( sal_Bool = sal_True ) const; |
| inline const SvxLanguageItem &GetLanguage( sal_Bool = sal_True ) const; |
| inline const SvxEscapementItem &GetEscapement( sal_Bool = sal_True ) const; |
| inline const SvxCaseMapItem &GetCaseMap( sal_Bool = sal_True ) const; |
| inline const SvxNoHyphenItem &GetNoHyphenHere( sal_Bool = sal_True ) const; |
| inline const SvxBlinkItem &GetBlink( sal_Bool = sal_True ) const; |
| inline const SvxBrushItem &GetChrBackground( sal_Bool = sal_True ) const; |
| |
| inline const SvxFontItem &GetCJKFont( sal_Bool = sal_True ) const; |
| inline const SvxFontHeightItem &GetCJKSize( sal_Bool = sal_True ) const; |
| inline const SvxLanguageItem &GetCJKLanguage( sal_Bool = sal_True ) const; |
| inline const SvxPostureItem &GetCJKPosture( sal_Bool = sal_True ) const; |
| inline const SvxWeightItem &GetCJKWeight( sal_Bool = sal_True ) const; |
| inline const SvxFontItem &GetCTLFont( sal_Bool = sal_True ) const; |
| inline const SvxFontHeightItem &GetCTLSize( sal_Bool = sal_True ) const; |
| inline const SvxLanguageItem &GetCTLLanguage( sal_Bool = sal_True ) const; |
| inline const SvxPostureItem &GetCTLPosture( sal_Bool = sal_True ) const; |
| inline const SvxWeightItem &GetCTLWeight( sal_Bool = sal_True ) const; |
| inline const SfxBoolItem &GetWritingDirection( sal_Bool = sal_True ) const; |
| inline const SvxEmphasisMarkItem &GetEmphasisMark( sal_Bool = sal_True ) const; |
| inline const SvxTwoLinesItem &Get2Lines( sal_Bool = sal_True ) const; |
| inline const SvxCharScaleWidthItem &GetCharScaleW( sal_Bool = sal_True ) const; |
| inline const SvxCharRotateItem &GetCharRotate( sal_Bool = sal_True ) const; |
| inline const SvxCharReliefItem &GetCharRelief( sal_Bool = sal_True ) const; |
| inline const SvxCharHiddenItem &GetCharHidden( sal_Bool = sal_True ) const; |
| |
| // Frame-Attribute - impl. steht im frmatr.hxx, |
| inline const SwFmtFillOrder &GetFillOrder( sal_Bool = sal_True ) const; |
| inline const SwFmtFrmSize &GetFrmSize( sal_Bool = sal_True ) const; |
| inline const SwFmtHeader &GetHeader( sal_Bool = sal_True ) const; |
| inline const SwFmtFooter &GetFooter( sal_Bool = sal_True ) const; |
| inline const SwFmtSurround &GetSurround( sal_Bool = sal_True ) const; |
| inline const SwFmtHoriOrient &GetHoriOrient( sal_Bool = sal_True ) const; |
| inline const SwFmtAnchor &GetAnchor( sal_Bool = sal_True ) const; |
| inline const SwFmtCol &GetCol( sal_Bool = sal_True ) const; |
| inline const SvxPaperBinItem &GetPaperBin( sal_Bool = sal_True ) const; |
| inline const SvxLRSpaceItem &GetLRSpace( sal_Bool = sal_True ) const; |
| inline const SvxULSpaceItem &GetULSpace( sal_Bool = sal_True ) const; |
| inline const SwFmtCntnt &GetCntnt( sal_Bool = sal_True ) const; |
| inline const SvxPrintItem &GetPrint( sal_Bool = sal_True ) const; |
| inline const SvxOpaqueItem &GetOpaque( sal_Bool = sal_True ) const; |
| inline const SvxProtectItem &GetProtect( sal_Bool = sal_True ) const; |
| inline const SwFmtVertOrient &GetVertOrient( sal_Bool = sal_True ) const; |
| inline const SvxBoxItem &GetBox( sal_Bool = sal_True ) const; |
| inline const SvxFmtKeepItem &GetKeep( sal_Bool = sal_True ) const; |
| inline const SvxBrushItem &GetBackground( sal_Bool = sal_True ) const; |
| inline const SvxShadowItem &GetShadow( sal_Bool = sal_True ) const; |
| inline const SwFmtPageDesc &GetPageDesc( sal_Bool = sal_True ) const; |
| inline const SvxFmtBreakItem &GetBreak( sal_Bool = sal_True ) const; |
| inline const SvxMacroItem &GetMacro( sal_Bool = sal_True ) const; |
| inline const SwFmtURL &GetURL( sal_Bool = sal_True ) const; |
| inline const SwFmtEditInReadonly &GetEditInReadonly( sal_Bool = sal_True ) const; |
| inline const SwFmtLayoutSplit &GetLayoutSplit( sal_Bool = sal_True ) const; |
| inline const SwFmtRowSplit &GetRowSplit( sal_Bool = sal_True ) const; |
| inline const SwFmtChain &GetChain( sal_Bool = sal_True ) const; |
| inline const SwFmtLineNumber &GetLineNumber( sal_Bool = sal_True ) const; |
| inline const SwFmtFtnAtTxtEnd &GetFtnAtTxtEnd( sal_Bool = sal_True ) const; |
| inline const SwFmtEndAtTxtEnd &GetEndAtTxtEnd( sal_Bool = sal_True ) const; |
| inline const SwFmtNoBalancedColumns &GetBalancedColumns( sal_Bool = sal_True ) const; |
| inline const SvxFrameDirectionItem &GetFrmDir( sal_Bool = sal_True ) const; |
| inline const SwTextGridItem &GetTextGrid( sal_Bool = sal_True ) const; |
| inline const SwHeaderAndFooterEatSpacingItem &GetHeaderAndFooterEatSpacing( sal_Bool = sal_True ) const; |
| // OD 18.09.2003 #i18732# |
| inline const SwFmtFollowTextFlow &GetFollowTextFlow(sal_Bool = sal_True) const; |
| // OD 2004-05-05 #i28701# |
| inline const SwFmtWrapInfluenceOnObjPos& GetWrapInfluenceOnObjPos(sal_Bool = sal_True) const; |
| |
| // Grafik-Attribute - impl. steht im grfatr.hxx |
| inline const SwMirrorGrf &GetMirrorGrf( sal_Bool = sal_True ) const; |
| inline const SwCropGrf &GetCropGrf( sal_Bool = sal_True ) const; |
| inline const SwRotationGrf &GetRotationGrf(sal_Bool = sal_True ) const; |
| inline const SwLuminanceGrf &GetLuminanceGrf(sal_Bool = sal_True ) const; |
| inline const SwContrastGrf &GetContrastGrf(sal_Bool = sal_True ) const; |
| inline const SwChannelRGrf &GetChannelRGrf(sal_Bool = sal_True ) const; |
| inline const SwChannelGGrf &GetChannelGGrf(sal_Bool = sal_True ) const; |
| inline const SwChannelBGrf &GetChannelBGrf(sal_Bool = sal_True ) const; |
| inline const SwGammaGrf &GetGammaGrf(sal_Bool = sal_True ) const; |
| inline const SwInvertGrf &GetInvertGrf(sal_Bool = sal_True ) const; |
| inline const SwTransparencyGrf &GetTransparencyGrf(sal_Bool = sal_True ) const; |
| inline const SwDrawModeGrf &GetDrawModeGrf(sal_Bool = sal_True ) const; |
| |
| // Paragraph-Attribute - impl. steht im paratr.hxx |
| inline const SvxLineSpacingItem &GetLineSpacing( sal_Bool = sal_True ) const; |
| inline const SvxAdjustItem &GetAdjust( sal_Bool = sal_True ) const; |
| inline const SvxFmtSplitItem &GetSplit( sal_Bool = sal_True ) const; |
| inline const SwRegisterItem &GetRegister( sal_Bool = sal_True ) const; |
| inline const SwNumRuleItem &GetNumRule( sal_Bool = sal_True ) const; |
| inline const SvxWidowsItem &GetWidows( sal_Bool = sal_True ) const; |
| inline const SvxOrphansItem &GetOrphans( sal_Bool = sal_True ) const; |
| inline const SvxTabStopItem &GetTabStops( sal_Bool = sal_True ) const; |
| inline const SvxHyphenZoneItem &GetHyphenZone( sal_Bool = sal_True ) const; |
| inline const SwFmtDrop &GetDrop( sal_Bool = sal_True ) const; |
| inline const SvxScriptSpaceItem &GetScriptSpace(sal_Bool = sal_True) const; |
| inline const SvxHangingPunctuationItem &GetHangingPunctuation(sal_Bool = sal_True) const; |
| inline const SvxForbiddenRuleItem &GetForbiddenRule(sal_Bool = sal_True) const; |
| inline const SvxParaVertAlignItem &GetParaVertAlign(sal_Bool = sal_True) const; |
| inline const SvxParaGridItem &GetParaGrid(sal_Bool = sal_True) const; |
| inline const SwParaConnectBorderItem &GetParaConnectBorder(sal_Bool = sal_True ) const; |
| |
| // TabellenBox-Attribute - impl. steht im cellatr.hxx |
| inline const SwTblBoxNumFormat &GetTblBoxNumFmt( sal_Bool = sal_True ) const; |
| inline const SwTblBoxFormula &GetTblBoxFormula( sal_Bool = sal_True ) const; |
| inline const SwTblBoxValue &GetTblBoxValue( sal_Bool = sal_True ) const; |
| |
| /** SwFmt::IsBackgroundTransparent - for feature #99657# |
| |
| OD 22.08.2002 |
| Virtual method to determine, if background of format is transparent. |
| Default implementation returns false. Thus, subclasses have to overload |
| method, if the specific subclass can have a transparent background. |
| |
| @author OD |
| |
| @return false, default implementation |
| */ |
| virtual sal_Bool IsBackgroundTransparent() const; |
| |
| /** SwFmt::IsShadowTransparent - for feature #99657# |
| |
| OD 22.08.2002 |
| Virtual method to determine, if shadow of format is transparent. |
| Default implementation returns false. Thus, subclasses have to overload |
| method, if the specific subclass can have a transparent shadow. |
| |
| @author OD |
| |
| @return false, default implementation |
| */ |
| virtual sal_Bool IsShadowTransparent() const; |
| }; |
| |
| // --------------- inline Implementierungen ------------------------ |
| |
| inline const SfxPoolItem& SwFmt::GetFmtAttr( sal_uInt16 nWhich, |
| sal_Bool bInParents ) const |
| { |
| return aSet.Get( nWhich, bInParents ); |
| } |
| |
| inline void SwFmt::SetName( const sal_Char* pNewName, |
| sal_Bool bBroadcast ) |
| { |
| String aTmp( String::CreateFromAscii( pNewName ) ); |
| SetName( aTmp, bBroadcast ); |
| } |
| |
| inline SfxItemState SwFmt::GetItemState( sal_uInt16 nWhich, sal_Bool bSrchInParent, |
| const SfxPoolItem **ppItem ) const |
| { |
| return aSet.GetItemState( nWhich, bSrchInParent, ppItem ); |
| } |
| |
| #undef inline |
| |
| #endif // _FORMAT_HXX |