merged tag ooo/OOO330_m14
[LibreOffice.git] / sw / inc / breakit.hxx
blob4c016593fab6461e336ac4007879ea877f83587c
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 ************************************************************************/
28 #ifndef _BREAKIT_HXX
29 #define _BREAKIT_HXX
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>
38 #include <swdllapi.h>
40 class String;
42 /*************************************************************************
43 * class SwBreakIt
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.
67 SwBreakIt();
68 SwBreakIt( const SwBreakIt &);
69 SwBreakIt & operator= ( const SwBreakIt &);
71 // private (see @ _Create, _Delete).
72 explicit SwBreakIt(
73 const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > & rxMSF);
74 ~SwBreakIt();
76 public:
77 // private (see @ source/core/bastyp/init.cxx).
78 static void _Create(
79 const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > & rxMSF);
80 static void _Delete();
82 public:
83 static SwBreakIt * Get();
85 com::sun::star::uno::Reference< com::sun::star::i18n::XBreakIterator > GetBreakIter()
87 createBreakIterator();
88 return xBreak;
91 com::sun::star::uno::Reference< com::sun::star::i18n::XScriptTypeDetector > GetScriptTypeDetector()
93 createScriptTypeDetector();
94 return xCTLDetect;
97 const com::sun::star::lang::Locale& GetLocale( const LanguageType aLang )
99 if( !m_pLocale || aLast != aLang )
100 _GetLocale( aLang );
101 return *m_pLocale;
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;
121 #endif