1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 // MyEDITENG, wegen exportiertem EditEng 24 #ifndef _MyEDITENG_HXX 25 #define _MyEDITENG_HXX 26 27 class ImpEditEngine; 28 class EditView; 29 class OutputDevice; 30 class EditUndo; 31 class SvxFont; 32 class SfxItemPool; 33 class SfxStyleSheet; 34 class String; 35 class SfxStyleSheetPool; 36 class SvxSearchItem; 37 class SvxFieldItem; 38 class SvxCharSetColorItem; 39 class SfxUndoAction; 40 class MapMode; 41 class Color; 42 class Font; 43 class KeyEvent; 44 class PolyPolygon; 45 class Size; 46 class Point; 47 class Rectangle; 48 class SvStream; 49 class Link; 50 class OutputDevice; 51 class SvUShorts; 52 class SfxPoolItem; 53 class SvxNumBulletItem; 54 class SvxBulletItem; 55 class SvxLRSpaceItem; 56 class SvKeyValueIterator; 57 class SvxForbiddenCharactersTable; 58 class SvxNumberFormat; 59 class FontList; 60 61 #include <vos/ref.hxx> 62 #include <vector> 63 #include <com/sun/star/uno/Reference.h> 64 65 namespace com { namespace sun { namespace star { 66 namespace linguistic2 { 67 class XSpellChecker1; 68 class XHyphenator; 69 } 70 namespace datatransfer { 71 class XTransferable; 72 } 73 namespace lang { 74 struct Locale; 75 } 76 }}} 77 namespace svx{ 78 struct SpellPortion; 79 typedef std::vector<SpellPortion> SpellPortions; 80 } 81 namespace svl{ 82 class IUndoManager; 83 } 84 85 namespace basegfx { class B2DPolyPolygon; } 86 #include <rsc/rscsfx.hxx> 87 #ifndef _EDITDATA_HXX 88 #include <editeng/editdata.hxx> 89 #endif 90 #include <i18npool/lang.h> 91 #include "editeng/editengdllapi.h" 92 93 #include <tools/rtti.hxx> // wegen typedef TypeId 94 95 #include <editeng/eedata.hxx> 96 class SvxFieldData; 97 98 ////////////////////////////////////////////////////////////////////////////// 99 100 /** values for GetAttribs 101 */ 102 const sal_uInt8 EditEngineAttribs_All = 0; /// returns all attributes even when theire not set 103 const sal_uInt8 EditEngineAttribs_HardAndPara = 1; /// returns all attributes set on paragraph and on portions 104 const sal_uInt8 EditEngineAttribs_OnlyHard = 2; /// returns only attributes hard set on portions 105 106 #define GETATTRIBS_STYLESHEET (sal_uInt8)0x01 107 #define GETATTRIBS_PARAATTRIBS (sal_uInt8)0x02 108 #define GETATTRIBS_CHARATTRIBS (sal_uInt8)0x04 109 #define GETATTRIBS_ALL (sal_uInt8)0xFF 110 111 class SdrObject; 112 class EDITENG_DLLPUBLIC EditEngine 113 { 114 friend class EditView; 115 friend class ImpEditView; 116 friend class EditDbg; 117 friend class Outliner; 118 119 private: 120 ImpEditEngine* pImpEditEngine; 121 122 EDITENG_DLLPRIVATE EditEngine( const EditEngine& ); 123 EDITENG_DLLPRIVATE EditEngine& operator=( const EditEngine& ); 124 125 //#if 0 // _SOLAR__PRIVATE 126 EDITENG_DLLPRIVATE sal_Bool PostKeyEvent( const KeyEvent& rKeyEvent, EditView* pView ); 127 //#endif 128 129 protected: 130 131 132 public: 133 EditEngine( SfxItemPool* pItemPool ); 134 virtual ~EditEngine(); 135 136 const SfxItemSet& GetEmptyItemSet(); 137 138 void SetDefTab( sal_uInt16 nDefTab ); 139 sal_uInt16 GetDefTab() const; 140 141 void SetRefDevice( OutputDevice* pRefDef ); 142 OutputDevice* GetRefDevice() const; 143 144 void SetRefMapMode( const MapMode& rMapMode ); 145 MapMode GetRefMapMode(); 146 147 void SetUpdateMode( sal_Bool bUpdate ); 148 sal_Bool GetUpdateMode() const; 149 //IAccessible2 migration fix 150 void SetUpdateModeForAcc( sal_Bool bUp); 151 sal_Bool GetUpdateModeForAcc( ) const; 152 153 void SetBackgroundColor( const Color& rColor ); 154 Color GetBackgroundColor() const; 155 Color GetAutoColor() const; 156 void EnableAutoColor( sal_Bool b ); 157 sal_Bool IsAutoColorEnabled() const; 158 void ForceAutoColor( sal_Bool b ); 159 sal_Bool IsForceAutoColor() const; 160 161 void InsertView( EditView* pEditView, sal_uInt16 nIndex = EE_APPEND ); 162 EditView* RemoveView( EditView* pEditView ); 163 EditView* RemoveView( sal_uInt16 nIndex = EE_APPEND ); 164 EditView* GetView( sal_uInt16 nIndex = 0 ) const; 165 sal_uInt16 GetViewCount() const; 166 sal_Bool HasView( EditView* pView ) const; 167 EditView* GetActiveView() const; 168 void SetActiveView( EditView* pView ); 169 170 void SetPaperSize( const Size& rSize ); 171 const Size& GetPaperSize() const; 172 173 void SetVertical( sal_Bool bVertical ); 174 sal_Bool IsVertical() const; 175 176 void SetFixedCellHeight( sal_Bool bUseFixedCellHeight ); 177 sal_Bool IsFixedCellHeight() const; 178 179 void SetDefaultHorizontalTextDirection( EEHorizontalTextDirection eHTextDir ); 180 EEHorizontalTextDirection GetDefaultHorizontalTextDirection() const; 181 182 sal_uInt16 GetScriptType( const ESelection& rSelection ) const; 183 LanguageType GetLanguage( sal_uInt32 nPara, sal_uInt16 nPos ) const; 184 185 void TransliterateText( const ESelection& rSelection, sal_Int32 nTransliterationMode ); 186 187 void SetAsianCompressionMode( sal_uInt16 nCompression ); 188 sal_uInt16 GetAsianCompressionMode() const; 189 190 void SetKernAsianPunctuation( sal_Bool bEnabled ); 191 sal_Bool IsKernAsianPunctuation() const; 192 193 void SetAddExtLeading( sal_Bool b ); 194 sal_Bool IsAddExtLeading() const; 195 196 void SetPolygon( const basegfx::B2DPolyPolygon& rPolyPolygon ); 197 void SetPolygon( const basegfx::B2DPolyPolygon& rPolyPolygon, const basegfx::B2DPolyPolygon* pLinePolyPolygon); 198 void ClearPolygon(); 199 const PolyPolygon* GetPolygon(); 200 201 const Size& GetMinAutoPaperSize() const; 202 void SetMinAutoPaperSize( const Size& rSz ); 203 204 const Size& GetMaxAutoPaperSize() const; 205 void SetMaxAutoPaperSize( const Size& rSz ); 206 207 String GetText( LineEnd eEnd = LINEEND_LF ) const; 208 String GetText( const ESelection& rSelection, const LineEnd eEnd = LINEEND_LF ) const; 209 sal_uInt32 GetTextLen() const; 210 sal_uInt32 GetTextHeight() const; 211 sal_uInt32 CalcTextWidth(); 212 213 String GetText( sal_uInt32 nParagraph ) const; 214 xub_StrLen GetTextLen( sal_uInt32 nParagraph ) const; 215 sal_uInt32 GetTextHeight( sal_uInt32 nParagraph ) const; 216 217 sal_uInt32 GetParagraphCount() const; 218 219 sal_uInt16 GetLineCount( sal_uInt32 nParagraph ) const; 220 xub_StrLen GetLineLen( sal_uInt32 nParagraph, sal_uInt16 nLine ) const; 221 void GetLineBoundaries( /*out*/sal_uInt16 &rStart, /*out*/sal_uInt16 &rEnd, sal_uInt32 nParagraph, sal_uInt16 nLine ) const; 222 sal_uInt16 GetLineNumberAtIndex( sal_uInt32 nPara, sal_uInt16 nIndex ) const; 223 sal_uInt32 GetLineHeight( sal_uInt32 nParagraph, sal_uInt16 nLine = 0 ); 224 sal_uInt16 GetFirstLineOffset( sal_uInt32 nParagraph ); 225 ParagraphInfos GetParagraphInfos( sal_uInt32 nPara ); 226 sal_uInt32 FindParagraph( long nDocPosY ); 227 EPosition FindDocPosition( const Point& rDocPos ) const; 228 Rectangle GetCharacterBounds( const EPosition& rPos ) const; 229 230 String GetWord( sal_uInt32 nPara, xub_StrLen nIndex ); 231 232 ESelection GetWord( const ESelection& rSelection, sal_uInt16 nWordType ) const; 233 ESelection WordLeft( const ESelection& rSelection, sal_uInt16 nWordType ) const; 234 ESelection WordRight( const ESelection& rSelection, sal_uInt16 nWordType ) const; 235 ESelection CursorLeft( const ESelection& rSelection, sal_uInt16 nCharacterIteratorMode ) const; 236 ESelection CursorRight( const ESelection& rSelection, sal_uInt16 nCharacterIteratorMode ) const; 237 ESelection SelectSentence( const ESelection& rCurSel ) const; 238 239 void Clear(); 240 void SetText( const String& rStr ); 241 242 EditTextObject* CreateTextObject(); 243 EditTextObject* CreateTextObject( sal_uInt32 nPara, sal_uInt32 nParas = 1 ); 244 EditTextObject* CreateTextObject( const ESelection& rESelection ); 245 void SetText( const EditTextObject& rTextObject ); 246 247 void RemoveParagraph( sal_uInt32 nPara ); 248 void InsertParagraph( sal_uInt32 nPara, const EditTextObject& rTxtObj ); 249 void InsertParagraph( sal_uInt32 nPara, const String& rText); 250 251 void SetText( sal_uInt32 nPara, const EditTextObject& rTxtObj ); 252 void SetText( sal_uInt32 nPara, const String& rText); 253 254 virtual void SetParaAttribs( sal_uInt32 nPara, const SfxItemSet& rSet ); 255 virtual const SfxItemSet& GetParaAttribs( sal_uInt32 nPara ) const; 256 257 void GetCharAttribs( sal_uInt32 nPara, EECharAttribArray& rLst ) const; 258 259 SfxItemSet GetAttribs( sal_uInt32 nPara, sal_uInt16 nStart, sal_uInt16 nEnd, sal_uInt8 nFlags = 0xFF ) const; 260 SfxItemSet GetAttribs( const ESelection& rSel, sal_Bool bOnlyHardAttrib = EditEngineAttribs_All ); 261 262 sal_Bool HasParaAttrib( sal_uInt32 nPara, sal_uInt16 nWhich ) const; 263 const SfxPoolItem& GetParaAttrib( sal_uInt32 nPara, sal_uInt16 nWhich ); 264 265 Font GetStandardFont( sal_uInt32 nPara ); 266 SvxFont GetStandardSvxFont( sal_uInt32 nPara ); 267 268 void RemoveAttribs( const ESelection& rSelection, sal_Bool bRemoveParaAttribs, sal_uInt16 nWhich ); 269 270 void ShowParagraph( sal_uInt32 nParagraph, sal_Bool bShow = sal_True ); 271 sal_Bool IsParagraphVisible( sal_uInt32 nParagraph ); 272 273 ::svl::IUndoManager& GetUndoManager(); 274 ::svl::IUndoManager* SetUndoManager(::svl::IUndoManager* pNew); 275 void UndoActionStart( sal_uInt16 nId ); 276 void UndoActionEnd( sal_uInt16 nId ); 277 sal_Bool IsInUndo(); 278 279 void EnableUndo( sal_Bool bEnable ); 280 sal_Bool IsUndoEnabled(); 281 282 /** returns the value last used for bTryMerge while calling ImpEditEngine::InsertUndo 283 This is currently used in a bad but needed hack to get undo actions merged in the 284 OutlineView in impress. Do not use it unless you want to sell your soul too! */ 285 sal_Bool HasTriedMergeOnLastAddUndo() const; 286 287 void ClearModifyFlag(); 288 void SetModified(); 289 sal_Bool IsModified() const; 290 291 void SetModifyHdl( const Link& rLink ); 292 Link GetModifyHdl() const; 293 294 sal_Bool IsInSelectionMode() const; 295 void StopSelectionMode(); 296 297 void StripPortions(); 298 void GetPortions( sal_uInt32 nPara, SvUShorts& rList ); 299 300 long GetFirstLineStartX( sal_uInt32 nParagraph ); 301 Point GetDocPosTopLeft( sal_uInt32 nParagraph ); 302 Point GetDocPos( const Point& rPaperPos ) const; 303 sal_Bool IsTextPos( const Point& rPaperPos, sal_uInt16 nBorder = 0 ); 304 305 // StartDocPos entspr. VisArea.TopLeft(). 306 void Draw( OutputDevice* pOutDev, const Rectangle& rOutRect ); 307 void Draw( OutputDevice* pOutDev, const Rectangle& rOutRect, const Point& rStartDocPos ); 308 void Draw( OutputDevice* pOutDev, const Rectangle& rOutRect, const Point& rStartDocPos, sal_Bool bClip ); 309 void Draw( OutputDevice* pOutDev, const Point& rStartPos, short nOrientation = 0 ); 310 311 // sal_uInt32: Fehlercode des Streams. 312 sal_uLong Read( SvStream& rInput, const String& rBaseURL, EETextFormat, SvKeyValueIterator* pHTTPHeaderAttrs = NULL ); 313 sal_uLong Write( SvStream& rOutput, EETextFormat ); 314 315 void SetStatusEventHdl( const Link& rLink ); 316 Link GetStatusEventHdl() const; 317 318 void SetNotifyHdl( const Link& rLink ); 319 Link GetNotifyHdl() const; 320 321 void SetImportHdl( const Link& rLink ); 322 Link GetImportHdl() const; 323 324 // Flat-Mode: Keine Zeichenformatierung auswerten => Fuer Outliner 325 sal_Bool IsFlatMode() const; 326 void SetFlatMode( sal_Bool bFlat ); 327 328 void SetControlWord( sal_uInt32 nWord ); 329 sal_uInt32 GetControlWord() const; 330 331 void QuickSetAttribs( const SfxItemSet& rSet, const ESelection& rSel ); 332 void QuickRemoveCharAttribs( sal_uInt32 nPara, sal_uInt16 nWhich = 0 ); 333 void QuickMarkInvalid( const ESelection& rSel ); 334 void QuickFormatDoc( sal_Bool bFull = sal_False ); 335 void QuickInsertField( const SvxFieldItem& rFld, const ESelection& rSel ); 336 void QuickInsertLineBreak( const ESelection& rSel ); 337 void QuickInsertText( const String& rText, const ESelection& rSel ); 338 void QuickDelete( const ESelection& rSel ); 339 void QuickMarkToBeRepainted( sal_uInt32 nPara ); 340 341 void SetGlobalCharStretching( sal_uInt16 nX = 100, sal_uInt16 nY = 100 ); 342 void GetGlobalCharStretching( sal_uInt16& rX, sal_uInt16& rY ); 343 void DoStretchChars( sal_uInt16 nX, sal_uInt16 nY ); 344 345 void SetEditTextObjectPool( SfxItemPool* pPool ); 346 SfxItemPool* GetEditTextObjectPool() const; 347 348 void SetStyleSheetPool( SfxStyleSheetPool* pSPool ); 349 SfxStyleSheetPool* GetStyleSheetPool(); 350 351 void SetStyleSheet( sal_uInt32 nPara, SfxStyleSheet* pStyle ); 352 SfxStyleSheet* GetStyleSheet( sal_uInt32 nPara ) const; 353 354 void SetWordDelimiters( const String& rDelimiters ); 355 String GetWordDelimiters() const; 356 357 void SetGroupChars( const String& rChars ); 358 String GetGroupChars() const; 359 360 void EnablePasteSpecial( sal_Bool bEnable ); 361 sal_Bool IsPasteSpecialEnabled() const; 362 363 void EnableIdleFormatter( sal_Bool bEnable ); 364 sal_Bool IsIdleFormatterEnabled() const; 365 366 void EraseVirtualDevice(); 367 368 void SetSpeller( ::com::sun::star::uno::Reference< 369 ::com::sun::star::linguistic2::XSpellChecker1 > &xSpeller ); 370 ::com::sun::star::uno::Reference< 371 ::com::sun::star::linguistic2::XSpellChecker1 > 372 GetSpeller(); 373 ::com::sun::star::uno::Reference< 374 ::com::sun::star::linguistic2::XHyphenator > 375 GetHyphenator() const; 376 void SetHyphenator( ::com::sun::star::uno::Reference< 377 ::com::sun::star::linguistic2::XHyphenator >& xHyph ); 378 379 void SetForbiddenCharsTable( vos::ORef<SvxForbiddenCharactersTable> xForbiddenChars ); 380 vos::ORef<SvxForbiddenCharactersTable> GetForbiddenCharsTable() const; 381 382 void SetDefaultLanguage( LanguageType eLang ); 383 LanguageType GetDefaultLanguage() const; 384 385 sal_Bool HasOnlineSpellErrors() const; 386 void CompleteOnlineSpelling(); 387 388 void SetBigTextObjectStart( sal_uInt16 nStartAtPortionCount ); 389 sal_uInt16 GetBigTextObjectStart() const; 390 sal_Bool ShouldCreateBigTextObject() const; 391 392 // Zum schnellen Vorab-Pruefen ohne View: 393 EESpellState HasSpellErrors(); 394 sal_Bool HasText( const SvxSearchItem& rSearchItem ); 395 396 //initialize sentence spelling 397 void StartSpelling(EditView& rEditView, sal_Bool bMultipleDoc); 398 //spell and return a sentence 399 bool SpellSentence(EditView& rEditView, ::svx::SpellPortions& rToFill, bool bIsGrammarChecking ); 400 // put spell position to start of current sentence 401 void PutSpellingToSentenceStart( EditView& rEditView ); 402 //applies a changed sentence 403 void ApplyChangedSentence(EditView& rEditView, const ::svx::SpellPortions& rNewPortions, bool bRecheck ); 404 //deinitialize sentence spelling 405 void EndSpelling(); 406 407 // for text conversion (see also HasSpellErrors) 408 sal_Bool HasConvertibleTextPortion( LanguageType nLang ); 409 virtual sal_Bool ConvertNextDocument(); 410 411 sal_Bool UpdateFields(); 412 void RemoveFields( sal_Bool bKeepFieldText, TypeId aType = NULL ); 413 414 sal_uInt16 GetFieldCount( sal_uInt32 nPara ) const; 415 EFieldInfo GetFieldInfo( sal_uInt32 nPara, sal_uInt16 nField ) const; 416 417 sal_Bool IsRightToLeft( sal_uInt32 nPara ) const; 418 419 ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable > 420 CreateTransferable( const ESelection& rSelection ) const; 421 422 // MT: Can't create new virtual functions like for ParagraphInserted/Deleted, musst be compatible in SRC638, change later... 423 void SetBeginMovingParagraphsHdl( const Link& rLink ); 424 void SetEndMovingParagraphsHdl( const Link& rLink ); 425 void SetBeginPasteOrDropHdl( const Link& rLink ); 426 void SetEndPasteOrDropHdl( const Link& rLink ); 427 428 virtual void PaintingFirstLine( sal_uInt32 nPara, const Point& rStartPos, long nBaseLineY, const Point& rOrigin, short nOrientation, OutputDevice* pOutDev ); 429 virtual void ParagraphInserted( sal_uInt32 nNewParagraph ); 430 virtual void ParagraphDeleted( sal_uInt32 nDeletedParagraph ); 431 virtual void ParagraphConnected( sal_uInt32 nLeftParagraph, sal_uInt32 nRightParagraph ); 432 virtual void ParaAttribsChanged( sal_uInt32 nParagraph ); 433 virtual void StyleSheetChanged( SfxStyleSheet* pStyle ); 434 virtual void ParagraphHeightChanged( sal_uInt32 nPara ); 435 436 // #101498# 437 virtual void DrawingText( 438 const Point& rStartPos, const String& rText, sal_uInt16 nTextStart, sal_uInt16 nTextLen, const sal_Int32* pDXArray, 439 const SvxFont& rFont, sal_uInt32 nPara, xub_StrLen nIndex, sal_uInt8 nRightToLeft, 440 const EEngineData::WrongSpellVector* pWrongSpellVector, 441 const SvxFieldData* pFieldData, 442 bool bEndOfLine, 443 bool bEndOfParagraph, 444 bool bEndOfBullet, 445 const ::com::sun::star::lang::Locale* pLocale, 446 const Color& rOverlineColor, 447 const Color& rTextLineColor); 448 449 virtual String GetUndoComment( sal_uInt16 nUndoId ) const; 450 virtual sal_Bool FormattingParagraph( sal_uInt32 nPara ); 451 virtual sal_Bool SpellNextDocument(); 452 virtual void FieldClicked( const SvxFieldItem& rField, sal_uInt32 nPara, xub_StrLen nPos ); 453 virtual void FieldSelected( const SvxFieldItem& rField, sal_uInt32 nPara, xub_StrLen nPos ); 454 virtual String CalcFieldValue( const SvxFieldItem& rField, sal_uInt32 nPara, xub_StrLen nPos, Color*& rTxtColor, Color*& rFldColor ); 455 456 // to be overloaded if access to bullet information needs to be provided 457 virtual const SvxNumberFormat * GetNumberFormat( sal_uInt32 nPara ) const; 458 459 virtual Rectangle GetBulletArea( sal_uInt32 nPara ); 460 461 static SfxItemPool* CreatePool( sal_Bool bLoadRefCounts = sal_True ); 462 static SfxItemPool& GetGlobalItemPool(); 463 static sal_uInt32 RegisterClipboardFormatName(); 464 static sal_Bool DoesKeyChangeText( const KeyEvent& rKeyEvent ); 465 static sal_Bool DoesKeyMoveCursor( const KeyEvent& rKeyEvent ); 466 static sal_Bool IsSimpleCharInput( const KeyEvent& rKeyEvent ); 467 static sal_uInt16 GetAvailableSearchOptions(); 468 static void SetFontInfoInItemSet( SfxItemSet& rItemSet, const Font& rFont ); 469 static void SetFontInfoInItemSet( SfxItemSet& rItemSet, const SvxFont& rFont ); 470 static Font CreateFontFromItemSet( const SfxItemSet& rItemSet ); 471 static Font CreateFontFromItemSet( const SfxItemSet& rItemSet, sal_uInt16 nScriptType ); 472 static SvxFont CreateSvxFontFromItemSet( const SfxItemSet& rItemSet ); 473 static void ImportBulletItem( SvxNumBulletItem& rNumBullet, sal_uInt16 nLevel, const SvxBulletItem* pOldBullet, const SvxLRSpaceItem* pOldLRSpace ); IsPrintable(sal_Unicode c)474 static sal_Bool IsPrintable( sal_Unicode c ) { return ( ( c >= 32 ) && ( c != 127 ) ); } 475 static sal_Bool HasValidData( const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& rTransferable ); GetCurTextObj()476 virtual SdrObject* GetCurTextObj() { return NULL; } 477 /** sets a link that is called at the beginning of a drag operation at an edit view */ 478 void SetBeginDropHdl( const Link& rLink ); 479 Link GetBeginDropHdl() const; 480 481 /** sets a link that is called at the end of a drag operation at an edit view */ 482 void SetEndDropHdl( const Link& rLink ); 483 Link GetEndDropHdl() const; 484 485 /// specifies if auto-correction should capitalize the first word or not (default is on) 486 void SetFirstWordCapitalization( sal_Bool bCapitalize ); 487 sal_Bool IsFirstWordCapitalization() const; 488 }; 489 490 #endif // _MyEDITENG_HXX 491