diff options
Diffstat (limited to 'svtools/inc/svtools/texteng.hxx')
-rw-r--r-- | svtools/inc/svtools/texteng.hxx | 331 |
1 files changed, 0 insertions, 331 deletions
diff --git a/svtools/inc/svtools/texteng.hxx b/svtools/inc/svtools/texteng.hxx deleted file mode 100644 index 59fb1ab0be..0000000000 --- a/svtools/inc/svtools/texteng.hxx +++ /dev/null @@ -1,331 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * 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 _TEXTENG_HXX -#define _TEXTENG_HXX - -#include "svtools/svtdllapi.h" - -class TextDoc; -class TextView; -class TextPaM; -class TextSelection; -class TextViews; -class TEParaPortions; -class TextAttrib; -class TextCharAttrib; -class TextUndo; -class TextUndoManager; -class EditSelFunctionSet; -class EditSelEngine; -class IdleFormatter; -class TextNode; -class OutputDevice; -class SfxUndoAction; -class KeyEvent; -class Timer; - -namespace svl -{ - class IUndoManager; -} - -class TextLine; -class TETextPortion; -#include <svl/brdcst.hxx> -#include <tools/link.hxx> -#include <vcl/font.hxx> -#include <tools/string.hxx> -#include <tools/gen.hxx> - -#include <com/sun/star/lang/Locale.hpp> -#include <com/sun/star/uno/Reference.hxx> - -struct TEIMEInfos; -class SvtCTLOptions; - -namespace com { -namespace sun { -namespace star { -namespace i18n { - class XBreakIterator; - class XExtendedInputSequenceChecker; -}}}} - -class LocaleDataWrapper; - -enum TxtAlign { TXTALIGN_LEFT, TXTALIGN_CENTER, TXTALIGN_RIGHT }; - -class SVT_DLLPUBLIC TextEngine : public SfxBroadcaster -{ - friend class TextView; - friend class TextSelFunctionSet; - friend class ExtTextEngine; - friend class ExtTextView; - - friend class TextUndo; - friend class TextUndoManager; - friend class TextUndoDelPara; - friend class TextUndoConnectParas; - friend class TextUndoSplitPara; - friend class TextUndoInsertChars; - friend class TextUndoRemoveChars; - friend class TextUndoSetAttribs; - -private: - TextDoc* mpDoc; - TEParaPortions* mpTEParaPortions; - OutputDevice* mpRefDev; - - TextViews* mpViews; - TextView* mpActiveView; - - TextUndoManager* mpUndoManager; - - IdleFormatter* mpIdleFormatter; - - TEIMEInfos* mpIMEInfos; - - ::com::sun::star::lang::Locale maLocale; - ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator > mxBreakIterator; - - Rectangle maInvalidRec; - Range maInvalidRange; - - LocaleDataWrapper* mpLocaleDataWrapper; - - Font maFont; - Color maTextColor; - sal_uInt16 mnCharHeight; - sal_uInt16 mnFixCharWidth100; - - sal_uLong mnMaxTextLen; - sal_uLong mnMaxTextWidth; - sal_uLong mnCurTextWidth; - sal_uLong mnCurTextHeight; - sal_uLong mnDefTab; - - TxtAlign meAlign; - - sal_Bool mbIsFormatting : 1; // Semaphore wegen der Hook's - sal_Bool mbFormatted : 1; - sal_Bool mbUpdate : 1; - sal_Bool mbModified : 1; - sal_Bool mbUndoEnabled : 1; - sal_Bool mbIsInUndo : 1; - sal_Bool mbDowning : 1; - sal_Bool mbRightToLeft : 1; - sal_Bool mbHasMultiLineParas : 1; - - TextEngine( const TextEngine& ) : SfxBroadcaster() {} - TextEngine& operator=( const TextEngine& ) { return *this; } - -protected: - - void CursorMoved( sal_uLong nNode ); - void TextModified(); - - void ImpInitDoc(); - void ImpRemoveText(); - TextPaM ImpDeleteText( const TextSelection& rSel ); - TextPaM ImpInsertText( const TextSelection& rSel, sal_Unicode c, sal_Bool bOverwrite = sal_False ); - TextPaM ImpInsertText( const TextSelection& rSel, const String& rText ); - TextPaM ImpInsertParaBreak( const TextSelection& rTextSelection, sal_Bool bKeepEndingAttribs = sal_True ); - TextPaM ImpInsertParaBreak( const TextPaM& rPaM, sal_Bool bKeepEndingAttribs = sal_True ); - void ImpRemoveChars( const TextPaM& rPaM, sal_uInt16 nChars, SfxUndoAction* pCurUndo = 0 ); - TextPaM ImpConnectParagraphs( sal_uLong nLeft, sal_uLong nRight ); - void ImpRemoveParagraph( sal_uLong nPara ); - void ImpInitWritingDirections( sal_uLong nPara ); - LocaleDataWrapper* ImpGetLocaleDataWrapper(); - - // to remain compatible in the minor release we copy the above ImpInsertText - // function and add the extra parameter we need but make sure this function - // gets not exported. First and seconf parameter swapped to have a different signatur. - SAL_DLLPRIVATE TextPaM ImpInsertText( sal_Unicode c, const TextSelection& rSel, sal_Bool bOverwrite = sal_False, sal_Bool bIsUserInput = sal_False ); - // some other new functions needed that must not be exported to remain compatible - SAL_DLLPRIVATE ::com::sun::star::uno::Reference < ::com::sun::star::i18n::XExtendedInputSequenceChecker > GetInputSequenceChecker() const; - SAL_DLLPRIVATE sal_Bool IsInputSequenceCheckingRequired( sal_Unicode c, const TextSelection& rCurSel ) const; - - // Broadcasten bzw. Selektionen anpassen: - void ImpParagraphInserted( sal_uLong nPara ); - void ImpParagraphRemoved( sal_uLong nPara ); - void ImpCharsRemoved( sal_uLong nPara, sal_uInt16 nPos, sal_uInt16 nChars ); - void ImpCharsInserted( sal_uLong nPara, sal_uInt16 nPos, sal_uInt16 nChars ); - void ImpFormattingParagraph( sal_uLong nPara ); - void ImpTextHeightChanged(); - void ImpTextFormatted(); - - DECL_LINK( IdleFormatHdl, Timer * ); - void CheckIdleFormatter(); - void IdleFormatAndUpdate( TextView* pCurView = 0, sal_uInt16 nMaxTimerRestarts = 5 ); - - sal_Bool CreateLines( sal_uLong nPara ); - void CreateAndInsertEmptyLine( sal_uLong nPara ); - void ImpBreakLine( sal_uLong nPara, TextLine* pLine, TETextPortion* pPortion, sal_uInt16 nPortionStart, long nRemainingWidth ); - sal_uInt16 SplitTextPortion( sal_uLong nPara, sal_uInt16 nPos ); - void CreateTextPortions( sal_uLong nPara, sal_uInt16 nStartPos ); - void RecalcTextPortion( sal_uLong nPara, sal_uInt16 nStartPos, short nNewChars ); - void SeekCursor( sal_uLong nNode, sal_uInt16 nPos, Font& rFont, OutputDevice* pOutDev ); - - void FormatDoc(); - void FormatFullDoc(); - void FormatAndUpdate( TextView* pCurView = 0 ); - sal_Bool IsFormatting() const { return mbIsFormatting; } - void UpdateViews( TextView* pCurView = 0 ); - - void ImpPaint( OutputDevice* pOut, const Point& rStartPos, Rectangle const* pPaintArea, TextSelection const* pPaintRange = 0, TextSelection const* pSelection = 0 ); - - void UpdateSelections(); - - sal_Bool IsFormatted() const { return mbFormatted; } - - sal_uInt16 GetCharPos( sal_uLong nPara, sal_uInt16 nLine, long nDocPosX, sal_Bool bSmart = sal_False ); - Rectangle GetEditCursor( const TextPaM& rPaM, sal_Bool bSpecial, sal_Bool bPreferPortionStart = sal_False ); - sal_uInt16 ImpFindIndex( sal_uLong nPortion, const Point& rPosInPara, sal_Bool bSmart ); - long ImpGetPortionXOffset( sal_uLong nPara, TextLine* pLine, sal_uInt16 nTextPortion ); - long ImpGetXPos( sal_uLong nPara, TextLine* pLine, sal_uInt16 nIndex, sal_Bool bPreferPortionStart = sal_False ); - long ImpGetOutputOffset( sal_uLong nPara, TextLine* pLine, sal_uInt16 nIndex, sal_uInt16 nIndex2 ); - sal_uInt8 ImpGetRightToLeft( sal_uLong nPara, sal_uInt16 nPos, sal_uInt16* pStart = NULL, sal_uInt16* pEnd = NULL ); - void ImpInitLayoutMode( OutputDevice* pOutDev, sal_Bool bDrawingR2LPortion = sal_False ); - TxtAlign ImpGetAlign() const; - - sal_uLong CalcTextHeight(); - sal_uLong CalcParaHeight( sal_uLong nParagraph ) const; - sal_uLong CalcTextWidth( sal_uLong nPara ); - sal_uLong CalcTextWidth( sal_uLong nPara, sal_uInt16 nPortionStart, sal_uInt16 nPortionLen, const Font* pFont = 0 ); - Range GetInvalidYOffsets( sal_uLong nPortion ); - - // Fuer Undo/Redo - void InsertContent( TextNode* pNode, sal_uLong nPara ); - TextPaM SplitContent( sal_uLong nNode, sal_uInt16 nSepPos ); - TextPaM ConnectContents( sal_uLong nLeftNode ); - - // Ans API uebergebene PaM's und Selektionen auf einen gueltigen Bereich einstellen - void ValidateSelection( TextSelection& rSel ) const; - void ValidatePaM( TextPaM& rPaM ) const; - -public: - TextEngine(); - ~TextEngine(); - - void SetText( const String& rStr ); - String GetText( LineEnd aSeparator = LINEEND_LF ) const; - String GetText( const TextSelection& rSel, LineEnd aSeparator = LINEEND_LF ) const; - String GetTextLines( LineEnd aSeparator = LINEEND_LF ) const; - void ReplaceText(const TextSelection& rSel, const String& rText); - - sal_uLong GetTextLen( LineEnd aSeparator = LINEEND_LF ) const; - sal_uLong GetTextLen( const TextSelection& rSel, LineEnd aSeparator = LINEEND_LF ) const; - - void SetFont( const Font& rFont ); - const Font& GetFont() const { return maFont; } - - sal_uInt16 GetDefTab() const; - - void SetLeftMargin( sal_uInt16 n ); - sal_uInt16 GetLeftMargin() const; - - void SetUpdateMode( sal_Bool bUpdate ); - sal_Bool GetUpdateMode() const { return mbUpdate; } - - sal_uInt16 GetViewCount() const; - TextView* GetView( sal_uInt16 nView ) const; - void InsertView( TextView* pTextView ); - void RemoveView( TextView* pTextView ); - TextView* GetActiveView() const; - void SetActiveView( TextView* pView ); - - void SetMaxTextLen( sal_uLong nLen ); - sal_uLong GetMaxTextLen() const { return mnMaxTextLen; } - - void SetMaxTextWidth( sal_uLong nWidth ); - sal_uLong GetMaxTextWidth() const { return mnMaxTextWidth; } - - sal_uLong GetTextHeight() const; - sal_uLong CalcTextWidth(); - sal_uInt16 GetCharHeight() const { return mnCharHeight; } - - sal_uLong GetParagraphCount() const; - String GetText( sal_uLong nParagraph ) const; - sal_uInt16 GetTextLen( sal_uLong nParagraph ) const; - sal_uLong GetTextHeight( sal_uLong nParagraph ) const; - - sal_uInt16 GetLineCount( sal_uLong nParagraph ) const; - sal_uInt16 GetLineLen( sal_uLong nParagraph, sal_uInt16 nLine ) const; - - void SetRightToLeft( sal_Bool bR2L ); - sal_Bool IsRightToLeft() const { return mbRightToLeft; } - - sal_Bool HasUndoManager() const { return mpUndoManager ? sal_True : sal_False; } - ::svl::IUndoManager& - GetUndoManager(); - void UndoActionStart( sal_uInt16 nId = 0 ); - void UndoActionEnd(); - void InsertUndo( TextUndo* pUndo, sal_Bool bTryMerge = sal_False ); - sal_Bool IsInUndo() { return mbIsInUndo; } - void SetIsInUndo( sal_Bool bInUndo ) { mbIsInUndo = bInUndo; } - void ResetUndo(); - - void EnableUndo( sal_Bool bEnable ); - sal_Bool IsUndoEnabled() { return mbUndoEnabled; } - - void SetModified( sal_Bool bModified ) { mbModified = bModified; } - sal_Bool IsModified() const { return mbModified; } - - sal_Bool Read( SvStream& rInput, const TextSelection* pSel = NULL ); - - sal_Bool Write( SvStream& rOutput, const TextSelection* pSel = NULL, sal_Bool bHTML = sal_False ); - - TextPaM GetPaM( const Point& rDocPos, sal_Bool bSmart = sal_True ); - Rectangle PaMtoEditCursor( const TextPaM& rPaM, sal_Bool bSpecial = sal_False ); - String GetWord( const TextPaM& rCursorPos, TextPaM* pStartOfWord = 0 ); - - sal_Bool HasAttrib( sal_uInt16 nWhich ) const; - const TextAttrib* FindAttrib( const TextPaM& rPaM, sal_uInt16 nWhich ) const; - const TextCharAttrib* FindCharAttrib( const TextPaM& rPaM, sal_uInt16 nWhich ) const; - - void RemoveAttribs( sal_uLong nPara, sal_uInt16 nWhich, sal_Bool bIdleFormatAndUpdate ); - void RemoveAttrib( sal_uLong nPara, const TextCharAttrib& rAttrib ); - void RemoveAttribs( sal_uLong nPara, sal_Bool bIdleFormatAndUpdate = sal_True ); - void SetAttrib( const TextAttrib& rAttr, sal_uLong nPara, sal_uInt16 nStart, sal_uInt16 nEnd, sal_Bool bIdleFormatAndUpdate = sal_True ); - - TxtAlign GetTextAlign() const { return meAlign; } - void SetTextAlign( TxtAlign eAlign ); - - void Draw( OutputDevice* pDev, const Point& rPos ); - - void SetLocale( const ::com::sun::star::lang::Locale& rLocale ); - ::com::sun::star::lang::Locale GetLocale(); - ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator > GetBreakIterator(); - - static sal_Bool DoesKeyChangeText( const KeyEvent& rKeyEvent ); - static sal_Bool IsSimpleCharInput( const KeyEvent& rKeyEvent ); -}; - -#endif // _TEXTENG_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |