1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 #ifndef _TXTATR_HXX 24 #define _TXTATR_HXX 25 26 #include <txatbase.hxx> // SwTxtAttr/SwTxtAttrEnd 27 #include <calbck.hxx> 28 29 30 class SwTxtNode; // fuer SwTxtFld 31 class SwCharFmt; 32 33 namespace sw { 34 class MetaFieldManager; 35 } 36 37 38 // ATT_CHARFMT ********************************************* 39 40 class SwTxtCharFmt : public SwTxtAttrEnd 41 { 42 SwTxtNode * m_pTxtNode; 43 sal_uInt16 m_nSortNumber; 44 45 public: 46 SwTxtCharFmt( SwFmtCharFmt& rAttr, xub_StrLen nStart, xub_StrLen nEnd ); 47 virtual ~SwTxtCharFmt( ); 48 49 // werden vom SwFmtCharFmt hierher weitergeleitet (no derivation from SwClient!) 50 void ModifyNotification( const SfxPoolItem*, const SfxPoolItem* ); 51 bool GetInfo( SfxPoolItem& rInfo ) const; 52 53 // get and set TxtNode pointer 54 void ChgTxtNode( SwTxtNode* pNew ) { m_pTxtNode = pNew; } 55 56 void SetSortNumber( sal_uInt16 nSortNumber ) { m_nSortNumber = nSortNumber; } 57 sal_uInt16 GetSortNumber() const { return m_nSortNumber; } 58 }; 59 60 61 // ****************************** 62 63 class SwTxtAttrNesting : public SwTxtAttrEnd 64 { 65 protected: 66 SwTxtAttrNesting( SfxPoolItem & i_rAttr, 67 const xub_StrLen i_nStart, const xub_StrLen i_nEnd ); 68 virtual ~SwTxtAttrNesting(); 69 }; 70 71 class SwTxtMeta : public SwTxtAttrNesting 72 { 73 private: 74 SwTxtMeta( SwFmtMeta & i_rAttr, 75 const xub_StrLen i_nStart, const xub_StrLen i_nEnd ); 76 77 public: 78 static SwTxtMeta * CreateTxtMeta( 79 ::sw::MetaFieldManager & i_rTargetDocManager, 80 SwTxtNode *const i_pTargetTxtNode, 81 SwFmtMeta & i_rAttr, 82 xub_StrLen const i_nStart, xub_StrLen const i_nEnd, 83 bool const i_bIsCopy); 84 85 virtual ~SwTxtMeta(); 86 87 void ChgTxtNode(SwTxtNode * const pNode); 88 }; 89 90 91 // ****************************** 92 93 class SW_DLLPUBLIC SwTxtRuby : public SwTxtAttrNesting, public SwClient 94 { 95 SwTxtNode* m_pTxtNode; 96 protected: 97 virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew); 98 public: 99 SwTxtRuby( SwFmtRuby& rAttr, xub_StrLen nStart, xub_StrLen nEnd ); 100 virtual ~SwTxtRuby(); 101 TYPEINFO(); 102 103 virtual sal_Bool GetInfo( SfxPoolItem& rInfo ) const; 104 105 SW_DLLPRIVATE void InitRuby(SwTxtNode & rNode); 106 107 /// get and set TxtNode pointer 108 const SwTxtNode* GetpTxtNode() const { return m_pTxtNode; } 109 inline const SwTxtNode& GetTxtNode() const; 110 void ChgTxtNode( SwTxtNode* pNew ) { m_pTxtNode = pNew; } 111 112 SwCharFmt* GetCharFmt(); 113 const SwCharFmt* GetCharFmt() const 114 { return (const_cast<SwTxtRuby*>(this))->GetCharFmt(); } 115 }; 116 117 // --------------- Inline Implementierungen ------------------------ 118 119 inline const SwTxtNode& SwTxtRuby::GetTxtNode() const 120 { 121 ASSERT( m_pTxtNode, "SwTxtRuby: where is my TxtNode?" ); 122 return *m_pTxtNode; 123 } 124 125 #endif 126