1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * This file is part of OpenOffice.org.
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org. If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
26 ************************************************************************/
31 #include <tools/solar.h>
32 #include <i18npool/lang.h>
33 #include <com/sun/star/uno/Reference.h>
34 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
35 #include <com/sun/star/i18n/XBreakIterator.hpp>
36 #include <com/sun/star/i18n/XScriptTypeDetector.hpp>
37 #include <com/sun/star/i18n/ForbiddenCharacters.hdl>
42 /*************************************************************************
44 *************************************************************************/
47 class SW_DLLPUBLIC SwBreakIt
49 com::sun::star::uno::Reference
< com::sun::star::lang::XMultiServiceFactory
> m_xMSF
;
50 mutable com::sun::star::uno::Reference
< com::sun::star::i18n::XBreakIterator
> xBreak
;
51 com::sun::star::uno::Reference
< com::sun::star::i18n::XScriptTypeDetector
> xCTLDetect
;
54 com::sun::star::lang::Locale
* m_pLocale
;
55 com::sun::star::i18n::ForbiddenCharacters
* m_pForbidden
;
57 LanguageType aLast
; // language of the current locale
58 LanguageType aForbiddenLang
; // language of the current forbiddenChar struct
60 void _GetLocale( const LanguageType aLang
);
61 void _GetForbidden( const LanguageType aLang
);
63 void createBreakIterator() const;
64 void createScriptTypeDetector();
66 // forbidden and not implemented.
68 SwBreakIt( const SwBreakIt
&);
69 SwBreakIt
& operator= ( const SwBreakIt
&);
71 // private (see @ _Create, _Delete).
73 const com::sun::star::uno::Reference
< com::sun::star::lang::XMultiServiceFactory
> & rxMSF
);
77 // private (see @ source/core/bastyp/init.cxx).
79 const com::sun::star::uno::Reference
< com::sun::star::lang::XMultiServiceFactory
> & rxMSF
);
80 static void _Delete();
83 static SwBreakIt
* Get();
85 com::sun::star::uno::Reference
< com::sun::star::i18n::XBreakIterator
> GetBreakIter()
87 createBreakIterator();
91 com::sun::star::uno::Reference
< com::sun::star::i18n::XScriptTypeDetector
> GetScriptTypeDetector()
93 createScriptTypeDetector();
97 const com::sun::star::lang::Locale
& GetLocale( const LanguageType aLang
)
99 if( !m_pLocale
|| aLast
!= aLang
)
104 const com::sun::star::i18n::ForbiddenCharacters
& GetForbidden( const LanguageType aLang
)
106 if( !m_pForbidden
|| aForbiddenLang
!= aLang
)
107 _GetForbidden( aLang
);
108 return *m_pForbidden
;
111 USHORT
GetRealScriptOfText( const String
& rTxt
, xub_StrLen nPos
) const;
112 USHORT
GetAllScriptsOfText( const String
& rTxt
) const;
115 #define SW_BREAKITER() SwBreakIt::Get()
116 #define SW_XBREAKITER() SW_BREAKITER()->GetBreakIter()
118 // @@@ backward compatibility @@@
119 SW_DLLPUBLIC
extern SwBreakIt
* pBreakIt
;