diff options
Diffstat (limited to 'svx/inc/svx/hangulhanja.hxx')
-rw-r--r-- | svx/inc/svx/hangulhanja.hxx | 307 |
1 files changed, 0 insertions, 307 deletions
diff --git a/svx/inc/svx/hangulhanja.hxx b/svx/inc/svx/hangulhanja.hxx deleted file mode 100644 index e4eefce17ea3..000000000000 --- a/svx/inc/svx/hangulhanja.hxx +++ /dev/null @@ -1,307 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: hangulhanja.hxx,v $ - * $Revision: 1.3 $ - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef SVX_HANGUL_HANJA_CONVERSION_HXX -#define SVX_HANGUL_HANJA_CONVERSION_HXX - -#include <vcl/window.hxx> -#include <svx/svxenum.hxx> - -#include <memory> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/lang/Locale.hpp> -#include <com/sun/star/uno/Sequence.hxx> -#include "svx/svxdllapi.h" - -//............................................................................. -namespace svx -{ -//............................................................................. - - class HangulHanjaConversion_Impl; - - //========================================================================= - //= HangulHanjaConversion - //========================================================================= - /** encapsulates Hangul-Hanja conversion functionality - - <p>terminology: - <ul><li>A <b>text <em>portion</em></b> is some (potentially large) piece of text - which is to be analyzed for convertible sub-strings.</li> - <li>A <b>text <em>unit</em></b> is a sub string in a text portion, which is - to be converted as a whole.</li> - </ul> - For instance, you could have two independent selections within your document, which are then - two text portions. A text unit would be single Hangul/Hanja words within a portion, or even - single Hangul syllabills when "replace by character" is enabled. - </p> - */ - class SVX_DLLPUBLIC HangulHanjaConversion - { - friend class HangulHanjaConversion_Impl; - - public: - enum ReplacementAction - { - eExchange, // simply exchange one text with another - eReplacementBracketed, // keep the original, and put the replacement in brackets after it - eOriginalBracketed, // replace the original text, but put it in brackeds after the replacement - eReplacementAbove, // keep the original, and put the replacement text as ruby text above it - eOriginalAbove, // replace the original text, but put it as ruby text above it - eReplacementBelow, // keep the original, and put the replacement text as ruby text below it - eOriginalBelow // replace the original text, but put it as ruby text below it - }; - - enum ConversionType // does not specify direction... - { - eConvHangulHanja, // Korean Hangul/Hanja conversion - eConvSimplifiedTraditional // Chinese simplified / Chinese traditional conversion - }; - - // Note: conversion direction for eConvSimplifiedTraditional is - // specified by source language. - // This one is for Hangul/Hanja where source and target language - // are the same. - enum ConversionDirection - { - eHangulToHanja, - eHanjaToHangul - }; - - enum ConversionFormat - { - eSimpleConversion, // used for simplified / traditional Chinese as well - eHangulBracketed, - eHanjaBracketed, - eRubyHanjaAbove, - eRubyHanjaBelow, - eRubyHangulAbove, - eRubyHangulBelow - }; - - private: - ::std::auto_ptr< HangulHanjaConversion_Impl > m_pImpl; - - // used to set initial values of m_pImpl object from saved ones - static sal_Bool m_bUseSavedValues; // defines if the followng two values should be used for initialization - static sal_Bool m_bTryBothDirectionsSave; - static ConversionDirection m_ePrimaryConversionDirectionSave; - - // Forbidden and not implemented. - HangulHanjaConversion (const HangulHanjaConversion &); - HangulHanjaConversion & operator= (const HangulHanjaConversion &); - - public: - HangulHanjaConversion( - Window* _pUIParent, - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB, - const ::com::sun::star::lang::Locale& _rSourceLocale, - const ::com::sun::star::lang::Locale& _rTargetLocale, - const Font* _pTargetFont, - sal_Int32 nOptions, - sal_Bool _bIsInteractive - ); - - virtual ~HangulHanjaConversion( ); - - // converts the whole document - void ConvertDocument(); - - LanguageType GetSourceLanguage() const; - LanguageType GetTargetLanguage() const; - const Font * GetTargetFont() const; - sal_Int32 GetConversionOptions() const; - sal_Bool IsInteractive() const; - - // chinese text conversion - static inline sal_Bool IsSimplified( LanguageType nLang ); - static inline sal_Bool IsTraditional( LanguageType nLang ); - static inline sal_Bool IsChinese( LanguageType nLang ); - static inline sal_Bool IsSimilarChinese( LanguageType nLang1, LanguageType nLang2 ); - - // used to specify that the conversion direction states from the - // last incarnation should be used as - // initial conversion direction for the next incarnation. - // (A hack used to transport a state information from - // one incarnation to the next. Used in Writers text conversion...) - static void SetUseSavedConversionDirectionState( sal_Bool bVal ); - static sal_Bool IsUseSavedConversionDirectionState(); - - protected: - /** retrieves the next text portion which is to be analyzed - - <p>pseudo-abstract, needs to be overridden</p> - - @param _rNextPortion - upon return, this must contain the next text portion - @param _rLangOfPortion - upon return, this must contain the language for the found text portion. - (necessary for Chinese translation since there are 5 language variants - too look for even if the 'source' language usually is only 'simplified' - or 'traditional'.) - */ - virtual void GetNextPortion( - ::rtl::OUString& /* [out] */ _rNextPortion, - LanguageType& /* [out] */ _rLangOfPortion, - sal_Bool /* [in] */ _bAllowImplicitChangesForNotConvertibleText ); - - /** announces a new "current unit" - - <p>This will be called whenever it is necessary to interactively ask the user for - a conversion. In such a case, a range within the current portion (see <member>GetNextPortion</member>) - is presented to the user for chosing a substitution. Additionally, this method is called, - so that derived classes can e.g. highlight this text range in a document view.</p> - - <p>Note that the indexes are relative to the most recent replace action. See - <member>ReplaceUnit</member> for details.</p> - - @param _nUnitStart - the start index of the unit - - @param _nUnitEnd - the start index (exclusively!) of the unit. - - @param _bAllowImplicitChangesForNotConvertibleText - allows implicit changes other than the text itself for the - text parts not being convertible. - Used for chinese translation to attribute all not convertible - text (e.g. western text, empty paragraphs, spaces, ...) to - the target language and target font of the conversion. - This is to ensure that after the conversion any new text entered - anywhere in the document will have the target language (of course - CJK Language only) and target font (CJK font only) set. - - @see GetNextPortion - */ - virtual void HandleNewUnit( const sal_Int32 _nUnitStart, const sal_Int32 _nUnitEnd ); - - /** replaces a text unit within a text portion with a new text - - <p>pseudo-abstract, needs to be overridden</p> - - <p>Note an important thing about the indicies: They are always relative to the <em>previous - call</em> of ReplaceUnit. This means whe you get a call to ReplaceUnit, and replace some text - in your document, than you have to remember the document position immediately <em>behind</em> - the changed text. In a next call to ReplaceUnit, an index of <em>0</em> will denote exactly - this position behind the previous replacement<br/> - The reaons for this is that this class here does not know anything about your document structure, - so after a replacement took place, it's impossible to address anything in the range from the - beginning of the portion up to the replaced text.<br/> - In the very first call to ReplaceUnit, an index of <em>0</em> denotes the very first position of - the current portion.</p> - - <p>If the language of the text to be replaced is different from - the target language (as given by 'GetTargetLanguage') for example - when converting simplified Chinese from/to traditional Chinese - the language attribute of the new text has to be changed as well, - **and** the font is to be set to the default (document) font for - that language.</p> - - @param _nUnitStart - the start index of the range to replace - - @param _nUnitEnd - the end index (exclusively!) of the range to replace. E.g., an index - pair (4,5) indicates a range of length 1. - - @param _rOrigText - the original text to be replaced (as returned by GetNextPortion). - Since in Chinese conversion the original text is needed as well - in order to only do the minimal necassry text changes and to keep - as much attributes as possible this is supplied here as well. - - @param _rReplaceWith - The replacement text - - @param _rOffsets - An sequence matching the indices (characters) of _rReplaceWith - to the indices of the characters in the original text they are - replacing. - This is necessary since some portions of the text may get - converted in portions of different length than the original. - The sequence will be empty if all conversions in the text are - of equal length. That is if always the character at index i in - _rOffsets is replacing the character at index i in the original - text for all valid index values of i. - - @param _eAction - replacement action to take - - @param pNewUnitLanguage - if the replacement unit is required to have a new language that - is specified here. If the language is to be left unchanged this - is the 0 pointer. - */ - virtual void ReplaceUnit( - const sal_Int32 _nUnitStart, const sal_Int32 _nUnitEnd, - const ::rtl::OUString& _rOrigText, - const ::rtl::OUString& _rReplaceWith, - const ::com::sun::star::uno::Sequence< sal_Int32 > &_rOffsets, - ReplacementAction _eAction, - LanguageType *pNewUnitLanguage - ); - - /** specifies if rubies are supported by the document implementing - this class. - - @return - <TRUE/> if rubies are supported. - */ - virtual sal_Bool HasRubySupport() const; - }; - - sal_Bool HangulHanjaConversion::IsSimplified( LanguageType nLang ) - { - return nLang == LANGUAGE_CHINESE_SIMPLIFIED || - nLang == LANGUAGE_CHINESE_SINGAPORE; - } - - sal_Bool HangulHanjaConversion::IsTraditional( LanguageType nLang ) - { - return nLang == LANGUAGE_CHINESE_TRADITIONAL || - nLang == LANGUAGE_CHINESE_HONGKONG || - nLang == LANGUAGE_CHINESE_MACAU; - } - - sal_Bool HangulHanjaConversion::IsChinese( LanguageType nLang ) - { - return IsTraditional( nLang ) || IsSimplified( nLang ); - } - - sal_Bool HangulHanjaConversion::IsSimilarChinese( LanguageType nLang1, LanguageType nLang2 ) - { - return (IsTraditional(nLang1) && IsTraditional(nLang2)) || - (IsSimplified(nLang1) && IsSimplified(nLang2)); - } - -//............................................................................. -} // namespace svx -//............................................................................. - -#endif // SVX_HANGUL_HANJA_CONVERSION_HXX |