xref: /AOO41X/main/sw/inc/txatritr.hxx (revision 1d2dbeb0b7301723c6d13094e87a8714ef81a328)
1*1d2dbeb0SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*1d2dbeb0SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*1d2dbeb0SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*1d2dbeb0SAndrew Rist  * distributed with this work for additional information
6*1d2dbeb0SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*1d2dbeb0SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*1d2dbeb0SAndrew Rist  * "License"); you may not use this file except in compliance
9*1d2dbeb0SAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11*1d2dbeb0SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*1d2dbeb0SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*1d2dbeb0SAndrew Rist  * software distributed under the License is distributed on an
15*1d2dbeb0SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*1d2dbeb0SAndrew Rist  * KIND, either express or implied.  See the License for the
17*1d2dbeb0SAndrew Rist  * specific language governing permissions and limitations
18*1d2dbeb0SAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20*1d2dbeb0SAndrew Rist  *************************************************************/
21*1d2dbeb0SAndrew Rist 
22*1d2dbeb0SAndrew Rist 
23cdf0e10cSrcweir #ifndef _TXATRITR_HXX
24cdf0e10cSrcweir #define _TXATRITR_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir #include <tools/solar.h>
27cdf0e10cSrcweir #include <sal/types.h>
28cdf0e10cSrcweir #include <svl/svarray.hxx>
29cdf0e10cSrcweir #include <editeng/langitem.hxx>
30cdf0e10cSrcweir #include <hintids.hxx>
31cdf0e10cSrcweir 
32cdf0e10cSrcweir class String;
33cdf0e10cSrcweir class SwTxtNode;
34cdf0e10cSrcweir class SwTxtAttr;
35cdf0e10cSrcweir class SfxPoolItem;
36cdf0e10cSrcweir 
37cdf0e10cSrcweir 
38cdf0e10cSrcweir class SwScriptIterator
39cdf0e10cSrcweir {
40cdf0e10cSrcweir 	const String& rText;
41cdf0e10cSrcweir 	xub_StrLen nChgPos;
42cdf0e10cSrcweir 	sal_uInt16 nCurScript;
43cdf0e10cSrcweir     sal_Bool bForward;
44cdf0e10cSrcweir 
45cdf0e10cSrcweir public:
46cdf0e10cSrcweir     SwScriptIterator( const String& rStr, xub_StrLen nStart = 0,
47cdf0e10cSrcweir                       sal_Bool bFrwrd = sal_True );
48cdf0e10cSrcweir 
49cdf0e10cSrcweir 	sal_Bool Next();
50cdf0e10cSrcweir 
GetCurrScript() const51cdf0e10cSrcweir 	sal_uInt16 GetCurrScript() const 		{ return nCurScript; }
GetScriptChgPos() const52cdf0e10cSrcweir 	xub_StrLen GetScriptChgPos() const		{ return nChgPos; }
GetText() const53cdf0e10cSrcweir 	const String& GetText() const			{ return rText;	}
54cdf0e10cSrcweir };
55cdf0e10cSrcweir 
56cdf0e10cSrcweir 
57cdf0e10cSrcweir class SwTxtAttrIterator
58cdf0e10cSrcweir {
59cdf0e10cSrcweir 	SwScriptIterator aSIter;
60cdf0e10cSrcweir 	SvPtrarr aStack;
61cdf0e10cSrcweir 	const SwTxtNode& rTxtNd;
62cdf0e10cSrcweir 	const SfxPoolItem *pParaItem, *pCurItem;
63cdf0e10cSrcweir 	xub_StrLen nChgPos;
64cdf0e10cSrcweir 	sal_uInt16 nAttrPos, nWhichId;
65cdf0e10cSrcweir     sal_Bool bIsUseGetWhichOfScript;
66cdf0e10cSrcweir 
67cdf0e10cSrcweir 	void AddToStack( const SwTxtAttr& rAttr );
68cdf0e10cSrcweir 	void SearchNextChg();
69cdf0e10cSrcweir 
70cdf0e10cSrcweir public:
71cdf0e10cSrcweir 	SwTxtAttrIterator( const SwTxtNode& rTxtNd, sal_uInt16 nWhichId,
72cdf0e10cSrcweir                         xub_StrLen nStart = 0, sal_Bool bUseGetWhichOfScript = sal_True );
73cdf0e10cSrcweir 
74cdf0e10cSrcweir 	sal_Bool Next();
75cdf0e10cSrcweir 
GetAttr() const76cdf0e10cSrcweir 	const SfxPoolItem& GetAttr() const	{ return *pCurItem; }
GetChgPos() const77cdf0e10cSrcweir 	xub_StrLen GetChgPos() const		{ return nChgPos; }
78cdf0e10cSrcweir };
79cdf0e10cSrcweir 
80cdf0e10cSrcweir 
81cdf0e10cSrcweir class SwLanguageIterator : public SwTxtAttrIterator
82cdf0e10cSrcweir {
83cdf0e10cSrcweir public:
SwLanguageIterator(const SwTxtNode & rTxtNode,xub_StrLen nStart=0,sal_uInt16 nWhich=RES_CHRATR_LANGUAGE,sal_Bool bUseGetWhichOfScript=sal_True)84cdf0e10cSrcweir     SwLanguageIterator( const SwTxtNode& rTxtNode, xub_StrLen nStart = 0,
85cdf0e10cSrcweir                         sal_uInt16 nWhich = RES_CHRATR_LANGUAGE,
86cdf0e10cSrcweir                         sal_Bool bUseGetWhichOfScript = sal_True )
87cdf0e10cSrcweir         : SwTxtAttrIterator( rTxtNode, nWhich, nStart, bUseGetWhichOfScript )
88cdf0e10cSrcweir 	{}
89cdf0e10cSrcweir 
GetLanguage() const90cdf0e10cSrcweir 	sal_uInt16 GetLanguage() const
91cdf0e10cSrcweir 		{ return ((SvxLanguageItem&)GetAttr()).GetValue(); }
92cdf0e10cSrcweir };
93cdf0e10cSrcweir 
94cdf0e10cSrcweir 
95cdf0e10cSrcweir #endif
96