Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 :
21 : #include <svl/intitem.hxx>
22 : #include <editeng/editeng.hxx>
23 : #include <editeng/editview.hxx>
24 : #include <editeng/editdata.hxx>
25 : #include <editeng/eerdll.hxx>
26 : #include <editeng/lrspitem.hxx>
27 : #include <editeng/fhgtitem.hxx>
28 : #include <svl/style.hxx>
29 : #include <vcl/mapmod.hxx>
30 :
31 : #include <editeng/forbiddencharacterstable.hxx>
32 :
33 : #include <editeng/outliner.hxx>
34 : #include <paralist.hxx>
35 : #include <editeng/outlobj.hxx>
36 : #include <outleeng.hxx>
37 : #include <outlundo.hxx>
38 : #include <editeng/eeitem.hxx>
39 : #include <editeng/editstat.hxx>
40 :
41 :
42 : using namespace ::com::sun::star::uno;
43 : using namespace ::com::sun::star::linguistic2;
44 :
45 :
46 : // ====================== Simple pass-through =======================
47 :
48 :
49 604217 : void Outliner::SetUpdateMode( bool bUpdate )
50 : {
51 604217 : pEditEngine->SetUpdateMode( bUpdate );
52 604217 : }
53 :
54 :
55 6183 : bool Outliner::GetUpdateMode() const
56 : {
57 6183 : return pEditEngine->GetUpdateMode();
58 : }
59 :
60 14452 : const SfxItemSet& Outliner::GetEmptyItemSet() const
61 : {
62 14452 : return pEditEngine->GetEmptyItemSet();
63 : }
64 :
65 1779360 : void Outliner::EnableUndo( bool bEnable )
66 : {
67 1779360 : pEditEngine->EnableUndo( bEnable );
68 1779360 : }
69 :
70 690840 : bool Outliner::IsUndoEnabled() const
71 : {
72 690840 : return pEditEngine->IsUndoEnabled();
73 : }
74 :
75 0 : MapMode Outliner::GetRefMapMode() const
76 : {
77 0 : return pEditEngine->GetRefMapMode();
78 : }
79 :
80 27088 : void Outliner::SetRefMapMode( const MapMode& rMMode )
81 : {
82 27088 : pEditEngine->SetRefMapMode( rMMode );
83 27088 : }
84 :
85 58604 : void Outliner::SetBackgroundColor( const Color& rColor )
86 : {
87 58604 : pEditEngine->SetBackgroundColor( rColor );
88 58604 : }
89 :
90 141662 : Color Outliner::GetBackgroundColor() const
91 : {
92 141662 : return pEditEngine->GetBackgroundColor();
93 : }
94 :
95 :
96 138 : void Outliner::ClearModifyFlag()
97 : {
98 138 : pEditEngine->ClearModifyFlag();
99 138 : }
100 :
101 21 : bool Outliner::IsModified() const
102 : {
103 21 : return pEditEngine->IsModified();
104 : }
105 :
106 77802 : sal_uLong Outliner::GetTextHeight() const
107 : {
108 77802 : return pEditEngine->GetTextHeight();
109 : }
110 :
111 336 : void Outliner::SetModifyHdl( const Link<>& rLink )
112 : {
113 336 : pEditEngine->SetModifyHdl( rLink );
114 336 : }
115 :
116 84 : Link<> Outliner::GetModifyHdl() const
117 : {
118 84 : return pEditEngine->GetModifyHdl();
119 : }
120 :
121 8769 : void Outliner::SetNotifyHdl( const Link<>& rLink )
122 : {
123 8769 : pEditEngine->aOutlinerNotifyHdl = rLink;
124 :
125 8769 : if ( rLink.IsSet() )
126 0 : pEditEngine->SetNotifyHdl( LINK( this, Outliner, EditEngineNotifyHdl ) );
127 : else
128 8769 : pEditEngine->SetNotifyHdl( Link<>() );
129 :
130 8769 : }
131 :
132 475 : void Outliner::SetStatusEventHdl( const Link<>& rLink )
133 : {
134 475 : pEditEngine->SetStatusEventHdl( rLink );
135 475 : }
136 :
137 229 : Link<> Outliner::GetStatusEventHdl() const
138 : {
139 229 : return pEditEngine->GetStatusEventHdl();
140 : }
141 :
142 39922 : void Outliner::SetDefTab( sal_uInt16 nTab )
143 : {
144 39922 : pEditEngine->SetDefTab( nTab );
145 39922 : }
146 :
147 0 : bool Outliner::IsFlatMode() const
148 : {
149 0 : return pEditEngine->IsFlatMode();
150 : }
151 :
152 60 : bool Outliner::UpdateFields()
153 : {
154 60 : return pEditEngine->UpdateFields();
155 : }
156 :
157 0 : void Outliner::RemoveFields( bool bKeepFieldText, TypeId aType )
158 : {
159 0 : pEditEngine->RemoveFields( bKeepFieldText, aType );
160 0 : }
161 :
162 0 : void Outliner::SetWordDelimiters( const OUString& rDelimiters )
163 : {
164 0 : pEditEngine->SetWordDelimiters( rDelimiters );
165 0 : }
166 :
167 0 : OUString Outliner::GetWordDelimiters() const
168 : {
169 0 : return pEditEngine->GetWordDelimiters();
170 : }
171 :
172 0 : OUString Outliner::GetWord( sal_Int32 nPara, sal_Int32 nIndex )
173 : {
174 0 : return pEditEngine->GetWord( nPara, nIndex );
175 : }
176 :
177 0 : void Outliner::Draw( OutputDevice* pOutDev, const Rectangle& rOutRect )
178 : {
179 0 : pEditEngine->Draw( pOutDev, rOutRect );
180 0 : }
181 :
182 0 : void Outliner::Draw( OutputDevice* pOutDev, const Point& rStartPos, short nOrientation )
183 : {
184 0 : pEditEngine->Draw( pOutDev, rStartPos, nOrientation );
185 0 : }
186 :
187 593450 : void Outliner::SetPaperSize( const Size& rSize )
188 : {
189 593450 : pEditEngine->SetPaperSize( rSize );
190 593450 : }
191 :
192 23009 : const Size& Outliner::GetPaperSize() const
193 : {
194 23009 : return pEditEngine->GetPaperSize();
195 : }
196 :
197 0 : void Outliner::SetPolygon( const basegfx::B2DPolyPolygon& rPolyPolygon )
198 : {
199 0 : pEditEngine->SetPolygon( rPolyPolygon );
200 0 : }
201 :
202 0 : void Outliner::SetPolygon( const basegfx::B2DPolyPolygon& rPolyPolygon, const basegfx::B2DPolyPolygon* pLinePolyPolygon)
203 : {
204 0 : pEditEngine->SetPolygon( rPolyPolygon, pLinePolyPolygon);
205 0 : }
206 :
207 429767 : void Outliner::ClearPolygon()
208 : {
209 429767 : pEditEngine->ClearPolygon();
210 429767 : }
211 :
212 0 : const Size& Outliner::GetMinAutoPaperSize() const
213 : {
214 0 : return pEditEngine->GetMinAutoPaperSize();
215 : }
216 :
217 451745 : void Outliner::SetMinAutoPaperSize( const Size& rSz )
218 : {
219 451745 : pEditEngine->SetMinAutoPaperSize( rSz );
220 451745 : }
221 :
222 0 : const Size& Outliner::GetMaxAutoPaperSize() const
223 : {
224 0 : return pEditEngine->GetMaxAutoPaperSize();
225 : }
226 :
227 464661 : void Outliner::SetMaxAutoPaperSize( const Size& rSz )
228 : {
229 464661 : pEditEngine->SetMaxAutoPaperSize( rSz );
230 464661 : }
231 :
232 0 : bool Outliner::IsExpanded( Paragraph* pPara ) const
233 : {
234 0 : return pParaList->HasVisibleChildren( pPara );
235 : }
236 :
237 0 : Paragraph* Outliner::GetParent( Paragraph* pParagraph ) const
238 : {
239 0 : return pParaList->GetParent( pParagraph );
240 : }
241 :
242 0 : sal_Int32 Outliner::GetChildCount( Paragraph* pParent ) const
243 : {
244 0 : return pParaList->GetChildCount( pParent );
245 : }
246 :
247 58828 : Size Outliner::CalcTextSize()
248 : {
249 58828 : return Size(pEditEngine->CalcTextWidth(),pEditEngine->GetTextHeight());
250 : }
251 :
252 148 : Size Outliner::CalcTextSizeNTP()
253 : {
254 148 : return Size(pEditEngine->CalcTextWidth(),pEditEngine->GetTextHeightNTP());
255 : }
256 :
257 34085 : void Outliner::SetStyleSheetPool( SfxStyleSheetPool* pSPool )
258 : {
259 34085 : pEditEngine->SetStyleSheetPool( pSPool );
260 34085 : }
261 :
262 306 : SfxStyleSheetPool* Outliner::GetStyleSheetPool()
263 : {
264 306 : return pEditEngine->GetStyleSheetPool();
265 : }
266 :
267 1269 : SfxStyleSheet* Outliner::GetStyleSheet( sal_Int32 nPara )
268 : {
269 1269 : return pEditEngine->GetStyleSheet( nPara );
270 : }
271 :
272 13 : bool Outliner::IsInSelectionMode() const
273 : {
274 13 : return pEditEngine->IsInSelectionMode();
275 : }
276 :
277 466620 : void Outliner::SetControlWord( EEControlBits nWord )
278 : {
279 466620 : pEditEngine->SetControlWord( nWord );
280 466620 : }
281 :
282 478045 : EEControlBits Outliner::GetControlWord() const
283 : {
284 478045 : return pEditEngine->GetControlWord();
285 : }
286 :
287 67154 : void Outliner::SetAsianCompressionMode( sal_uInt16 n )
288 : {
289 67154 : pEditEngine->SetAsianCompressionMode( n );
290 67154 : }
291 :
292 67154 : void Outliner::SetKernAsianPunctuation( bool b )
293 : {
294 67154 : pEditEngine->SetKernAsianPunctuation( b );
295 67154 : }
296 :
297 67066 : void Outliner::SetAddExtLeading( bool bExtLeading )
298 : {
299 67066 : pEditEngine->SetAddExtLeading( bExtLeading );
300 67066 : }
301 :
302 101483 : void Outliner::UndoActionStart( sal_uInt16 nId )
303 : {
304 101483 : pEditEngine->UndoActionStart( nId );
305 101483 : }
306 :
307 101483 : void Outliner::UndoActionEnd( sal_uInt16 nId )
308 : {
309 101483 : pEditEngine->UndoActionEnd( nId );
310 101483 : }
311 :
312 328 : void Outliner::InsertUndo( EditUndo* pUndo )
313 : {
314 328 : pEditEngine->GetUndoManager().AddUndoAction( pUndo, false );
315 328 : }
316 :
317 732087 : bool Outliner::IsInUndo()
318 : {
319 732087 : return pEditEngine->IsInUndo();
320 : }
321 :
322 0 : sal_uLong Outliner::GetLineCount( sal_Int32 nParagraph ) const
323 : {
324 0 : return pEditEngine->GetLineCount( nParagraph );
325 : }
326 :
327 0 : sal_Int32 Outliner::GetLineLen( sal_Int32 nParagraph, sal_Int32 nLine ) const
328 : {
329 0 : return pEditEngine->GetLineLen( nParagraph, nLine );
330 : }
331 :
332 0 : sal_uLong Outliner::GetLineHeight( sal_Int32 nParagraph, sal_Int32 nLine )
333 : {
334 0 : return pEditEngine->GetLineHeight( nParagraph, nLine );
335 : }
336 :
337 142559 : void Outliner::RemoveCharAttribs( sal_Int32 nPara, sal_uInt16 nWhich )
338 : {
339 142559 : pEditEngine->RemoveCharAttribs( nPara, nWhich );
340 142559 : }
341 :
342 0 : EESpellState Outliner::HasSpellErrors()
343 : {
344 0 : return pEditEngine->HasSpellErrors();
345 : }
346 :
347 0 : bool Outliner::HasConvertibleTextPortion( LanguageType nLang )
348 : {
349 0 : return pEditEngine->HasConvertibleTextPortion( nLang );
350 : }
351 :
352 0 : bool Outliner::ConvertNextDocument()
353 : {
354 0 : return false;
355 : }
356 :
357 4988 : void Outliner::SetDefaultLanguage( LanguageType eLang )
358 : {
359 4988 : pEditEngine->SetDefaultLanguage( eLang );
360 4988 : }
361 :
362 0 : LanguageType Outliner::GetDefaultLanguage() const
363 : {
364 0 : return pEditEngine->GetDefaultLanguage();
365 : }
366 :
367 406 : void Outliner::CompleteOnlineSpelling()
368 : {
369 406 : pEditEngine->CompleteOnlineSpelling();
370 406 : }
371 :
372 30 : bool Outliner::HasText( const SvxSearchItem& rSearchItem )
373 : {
374 30 : return pEditEngine->HasText( rSearchItem );
375 : }
376 :
377 39069 : void Outliner::SetEditTextObjectPool( SfxItemPool* pPool )
378 : {
379 39069 : pEditEngine->SetEditTextObjectPool( pPool );
380 39069 : }
381 :
382 1115 : SfxItemPool* Outliner::GetEditTextObjectPool() const
383 : {
384 1115 : return pEditEngine->GetEditTextObjectPool();
385 : }
386 :
387 0 : bool Outliner::SpellNextDocument()
388 : {
389 0 : return false;
390 : }
391 :
392 :
393 4496 : void Outliner::SetSpeller( Reference< XSpellChecker1 > &xSpeller )
394 : {
395 4496 : pEditEngine->SetSpeller( xSpeller );
396 4496 : }
397 0 : Reference< XSpellChecker1 > Outliner::GetSpeller()
398 : {
399 0 : return pEditEngine->GetSpeller();
400 : }
401 :
402 67317 : void Outliner::SetForbiddenCharsTable( rtl::Reference<SvxForbiddenCharactersTable> xForbiddenChars )
403 : {
404 67317 : EditEngine::SetForbiddenCharsTable( xForbiddenChars );
405 67317 : }
406 :
407 38130 : void Outliner::SetHyphenator( Reference< XHyphenator >& xHyph )
408 : {
409 38130 : pEditEngine->SetHyphenator( xHyph );
410 38130 : }
411 :
412 326 : OutputDevice* Outliner::GetRefDevice() const
413 : {
414 326 : return pEditEngine->GetRefDevice();
415 : }
416 :
417 0 : sal_uLong Outliner::GetTextHeight( sal_Int32 nParagraph ) const
418 : {
419 0 : return pEditEngine->GetTextHeight(nParagraph );
420 : }
421 :
422 3 : Point Outliner::GetDocPos( const Point& rPaperPos ) const
423 : {
424 3 : return pEditEngine->GetDocPos( rPaperPos );
425 : }
426 :
427 0 : Point Outliner::GetDocPosTopLeft( sal_Int32 nParagraph )
428 : {
429 0 : return pEditEngine->GetDocPosTopLeft( nParagraph );
430 : }
431 :
432 5 : bool Outliner::IsTextPos( const Point& rPaperPos, sal_uInt16 nBorder )
433 : {
434 5 : return IsTextPos( rPaperPos, nBorder, NULL );
435 : }
436 :
437 8 : bool Outliner::IsTextPos( const Point& rPaperPos, sal_uInt16 nBorder, bool* pbBullet )
438 : {
439 8 : if ( pbBullet)
440 3 : *pbBullet = false;
441 8 : bool bTextPos = pEditEngine->IsTextPos( rPaperPos, nBorder );
442 8 : if ( !bTextPos )
443 : {
444 3 : Point aDocPos = GetDocPos( rPaperPos );
445 3 : sal_Int32 nPara = pEditEngine->FindParagraph( aDocPos.Y() );
446 3 : if ( ( nPara != EE_PARA_NOT_FOUND ) && ImplHasNumberFormat( nPara ) )
447 : {
448 0 : Rectangle aBulArea = ImpCalcBulletArea( nPara, true, true );
449 0 : if ( aBulArea.IsInside( rPaperPos ) )
450 : {
451 0 : bTextPos = true;
452 0 : if ( pbBullet)
453 0 : *pbBullet = true;
454 : }
455 : }
456 : }
457 :
458 8 : return bTextPos;
459 : }
460 :
461 9495 : void Outliner::QuickSetAttribs( const SfxItemSet& rSet, const ESelection& rSel )
462 : {
463 9495 : pEditEngine->QuickSetAttribs( rSet, rSel );
464 9495 : }
465 :
466 28694 : void Outliner::QuickInsertText( const OUString& rText, const ESelection& rSel )
467 : {
468 28694 : bFirstParaIsEmpty = false;
469 28694 : pEditEngine->QuickInsertText( rText, rSel );
470 28694 : }
471 :
472 2515 : void Outliner::QuickDelete( const ESelection& rSel )
473 : {
474 2515 : bFirstParaIsEmpty = false;
475 2515 : pEditEngine->QuickDelete( rSel );
476 2515 : }
477 :
478 2918 : void Outliner::QuickInsertField( const SvxFieldItem& rFld, const ESelection& rSel )
479 : {
480 2918 : bFirstParaIsEmpty = false;
481 2918 : pEditEngine->QuickInsertField( rFld, rSel );
482 2918 : }
483 :
484 39 : void Outliner::QuickInsertLineBreak( const ESelection& rSel )
485 : {
486 39 : bFirstParaIsEmpty = false;
487 39 : pEditEngine->QuickInsertLineBreak( rSel );
488 39 : }
489 :
490 0 : void Outliner::QuickFormatDoc( bool bFull )
491 : {
492 0 : pEditEngine->QuickFormatDoc( bFull );
493 0 : }
494 :
495 429841 : void Outliner::SetGlobalCharStretching( sal_uInt16 nX, sal_uInt16 nY )
496 : {
497 :
498 : // reset bullet size
499 429841 : sal_Int32 nParagraphs = pParaList->GetParagraphCount();
500 860084 : for ( sal_Int32 nPara = 0; nPara < nParagraphs; nPara++ )
501 : {
502 430243 : Paragraph* pPara = pParaList->GetParagraph( nPara );
503 430243 : if ( pPara )
504 430243 : pPara->aBulSize.Width() = -1;
505 : }
506 :
507 429841 : pEditEngine->SetGlobalCharStretching( nX, nY );
508 429841 : }
509 :
510 4666 : void Outliner::GetGlobalCharStretching( sal_uInt16& rX, sal_uInt16& rY ) const
511 : {
512 4666 : pEditEngine->GetGlobalCharStretching( rX, rY );
513 4666 : }
514 :
515 8296 : void Outliner::EraseVirtualDevice()
516 : {
517 8296 : pEditEngine->EraseVirtualDevice();
518 8296 : }
519 :
520 8 : bool Outliner::ShouldCreateBigTextObject() const
521 : {
522 8 : return pEditEngine->ShouldCreateBigTextObject();
523 : }
524 :
525 1147373 : const EditEngine& Outliner::GetEditEngine() const
526 : {
527 1147373 : return *pEditEngine;
528 : }
529 :
530 14898 : void Outliner::SetVertical( bool b )
531 : {
532 14898 : pEditEngine->SetVertical( b );
533 14898 : }
534 :
535 4569 : bool Outliner::IsVertical() const
536 : {
537 4569 : return pEditEngine->IsVertical();
538 : }
539 :
540 123334 : void Outliner::SetFixedCellHeight( bool bUseFixedCellHeight )
541 : {
542 123334 : pEditEngine->SetFixedCellHeight( bUseFixedCellHeight );
543 123334 : }
544 :
545 43155 : void Outliner::SetDefaultHorizontalTextDirection( EEHorizontalTextDirection eHTextDir )
546 : {
547 43155 : pEditEngine->SetDefaultHorizontalTextDirection( eHTextDir );
548 43155 : }
549 :
550 18572 : EEHorizontalTextDirection Outliner::GetDefaultHorizontalTextDirection() const
551 : {
552 18572 : return pEditEngine->GetDefaultHorizontalTextDirection();
553 : }
554 :
555 3576 : SvtScriptType Outliner::GetScriptType( const ESelection& rSelection ) const
556 : {
557 3576 : return pEditEngine->GetScriptType( rSelection );
558 : }
559 :
560 53 : LanguageType Outliner::GetLanguage( sal_Int32 nPara, sal_Int32 nPos ) const
561 : {
562 53 : return pEditEngine->GetLanguage( nPara, nPos );
563 : }
564 :
565 969 : void Outliner::RemoveAttribs( const ESelection& rSelection, bool bRemoveParaAttribs, sal_uInt16 nWhich )
566 : {
567 969 : pEditEngine->RemoveAttribs( rSelection, bRemoveParaAttribs, nWhich );
568 969 : }
569 :
570 6009 : void Outliner::EnableAutoColor( bool b )
571 : {
572 6009 : pEditEngine->EnableAutoColor( b );
573 6009 : }
574 :
575 9 : void Outliner::ForceAutoColor( bool b )
576 : {
577 9 : pEditEngine->ForceAutoColor( b );
578 9 : }
579 :
580 214 : bool Outliner::IsForceAutoColor() const
581 : {
582 214 : return pEditEngine->IsForceAutoColor();
583 : }
584 :
585 0 : void Outliner::StartSpelling(EditView& rEditView, bool bMultipleDoc)
586 : {
587 0 : pEditEngine->StartSpelling(rEditView, bMultipleDoc);
588 0 : }
589 :
590 0 : bool Outliner::SpellSentence(EditView& rEditView, svx::SpellPortions& rToFill, bool bIsGrammarChecking )
591 : {
592 0 : return pEditEngine->SpellSentence(rEditView, rToFill, bIsGrammarChecking );
593 : }
594 :
595 0 : void Outliner::PutSpellingToSentenceStart( EditView& rEditView )
596 : {
597 0 : pEditEngine->PutSpellingToSentenceStart( rEditView );
598 0 : }
599 :
600 0 : void Outliner::ApplyChangedSentence(EditView& rEditView, const svx::SpellPortions& rNewPortions, bool bRecheck )
601 : {
602 0 : pEditEngine->ApplyChangedSentence( rEditView, rNewPortions, bRecheck );
603 0 : }
604 :
605 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|