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 _EERTFPAR_HXX 24 #define _EERTFPAR_HXX 25 26 #include <editeng/svxrtf.hxx> 27 28 #include <editdoc.hxx> 29 #include <impedit.hxx> 30 31 #ifndef SVX_LIGHT 32 33 class EditNodeIdx : public SvxNodeIdx 34 { 35 private: 36 ContentNode* pNode; 37 ImpEditEngine* pImpEditEngine; 38 39 public: EditNodeIdx(ImpEditEngine * pIEE,ContentNode * pNd=0)40 EditNodeIdx( ImpEditEngine* pIEE, ContentNode* pNd = 0) 41 { pImpEditEngine = pIEE; pNode = pNd; } 42 virtual sal_uLong GetIdx() const; 43 virtual SvxNodeIdx* Clone() const; GetNode()44 ContentNode* GetNode() { return pNode; } 45 }; 46 47 class EditPosition : public SvxPosition 48 { 49 private: 50 EditSelection* pCurSel; 51 ImpEditEngine* pImpEditEngine; 52 53 public: EditPosition(ImpEditEngine * pIEE,EditSelection * pSel)54 EditPosition( ImpEditEngine* pIEE, EditSelection* pSel ) 55 { pImpEditEngine = pIEE; pCurSel = pSel; } 56 57 virtual sal_uLong GetNodeIdx() const; 58 virtual sal_uInt16 GetCntIdx() const; 59 60 // erzeuge von sich selbst eine Kopie 61 virtual SvxPosition* Clone() const; 62 63 // erzeuge vom NodeIndex eine Kopie 64 virtual SvxNodeIdx* MakeNodeIdx() const; 65 }; 66 67 #define ACTION_INSERTTEXT 1 68 #define ACTION_INSERTPARABRK 2 69 70 class EditRTFParser : public SvxRTFParser 71 { 72 private: 73 EditSelection aCurSel; 74 ImpEditEngine* pImpEditEngine; 75 CharSet eDestCharSet; 76 MapMode aRTFMapMode; 77 MapMode aEditMapMode; 78 79 sal_uInt16 nDefFont; 80 sal_uInt16 nDefTab; 81 sal_uInt16 nDefFontHeight; 82 sal_uInt8 nLastAction; 83 84 protected: 85 virtual void InsertPara(); 86 virtual void InsertText(); 87 virtual void MovePos( int bForward = sal_True ); 88 virtual void SetEndPrevPara( SvxNodeIdx*& rpNodePos, 89 sal_uInt16& rCntPos ); 90 91 virtual void UnknownAttrToken( int nToken, SfxItemSet* pSet ); 92 virtual void NextToken( int nToken ); 93 virtual void SetAttrInDoc( SvxRTFItemStackType &rSet ); 94 virtual int IsEndPara( SvxNodeIdx* pNd, sal_uInt16 nCnt ) const; 95 virtual void CalcValue(); 96 void CreateStyleSheets(); 97 SfxStyleSheet* CreateStyleSheet( SvxRTFStyleType* pRTFStyle ); 98 SvxRTFStyleType* FindStyleSheet( const String& rName ); 99 void AddRTFDefaultValues( const EditPaM& rStart, const EditPaM& rEnd ); 100 void ReadField(); 101 void SkipGroup(); 102 103 public: 104 EditRTFParser( SvStream& rIn, EditSelection aCurSel, SfxItemPool& rAttrPool, ImpEditEngine* pImpEditEngine ); 105 ~EditRTFParser(); 106 107 virtual SvParserState CallParser(); 108 109 SetDestCharSet(CharSet eCharSet)110 void SetDestCharSet( CharSet eCharSet ) { eDestCharSet = eCharSet; } GetDestCharSet() const111 CharSet GetDestCharSet() const { return eDestCharSet; } 112 GetDefTab() const113 sal_uInt16 GetDefTab() const { return nDefTab; } GetDefFont()114 Font GetDefFont() { return GetFont( nDefFont ); } 115 GetCurPaM() const116 EditPaM GetCurPaM() const { return aCurSel.Max(); } 117 }; 118 119 SV_DECL_REF( EditRTFParser ) 120 SV_IMPL_REF( EditRTFParser ); 121 122 123 #endif // !SVX_LIGH 124 #endif //_EERTFPAR_HXX 125