LibreOffice Module vcl (master)  1
metaact.cxx
Go to the documentation of this file.
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 #include <stdio.h>
21 #include <string.h>
22 #include <osl/thread.h>
23 #include <sal/log.hxx>
24 #include <tools/stream.hxx>
25 #include <tools/vcompat.hxx>
26 #include <tools/helpers.hxx>
27 #include <vcl/dibtools.hxx>
28 #include <vcl/filter/SvmReader.hxx>
29 #include <vcl/filter/SvmWriter.hxx>
30 #include <vcl/outdev.hxx>
31 #include <vcl/metaact.hxx>
32 #include <vcl/graphictools.hxx>
33 #include <unotools/fontdefs.hxx>
34 #include <vcl/TypeSerializer.hxx>
35 
36 namespace
37 {
38 
39 void ImplScalePoint( Point& rPt, double fScaleX, double fScaleY )
40 {
41  rPt.setX( FRound( fScaleX * rPt.X() ) );
42  rPt.setY( FRound( fScaleY * rPt.Y() ) );
43 }
44 
45 void ImplScaleRect( tools::Rectangle& rRect, double fScaleX, double fScaleY )
46 {
47  Point aTL( rRect.TopLeft() );
48  Point aBR( rRect.BottomRight() );
49 
50  ImplScalePoint( aTL, fScaleX, fScaleY );
51  ImplScalePoint( aBR, fScaleX, fScaleY );
52 
53  rRect = tools::Rectangle( aTL, aBR );
54  rRect.Justify();
55 }
56 
57 void ImplScalePoly( tools::Polygon& rPoly, double fScaleX, double fScaleY )
58 {
59  for( sal_uInt16 i = 0, nCount = rPoly.GetSize(); i < nCount; i++ )
60  ImplScalePoint( rPoly[ i ], fScaleX, fScaleY );
61 }
62 
63 void ImplScaleLineInfo( LineInfo& rLineInfo, double fScaleX, double fScaleY )
64 {
65  if( !rLineInfo.IsDefault() )
66  {
67  const double fScale = ( fabs(fScaleX) + fabs(fScaleY) ) * 0.5;
68 
69  rLineInfo.SetWidth( FRound( fScale * rLineInfo.GetWidth() ) );
70  rLineInfo.SetDashLen( FRound( fScale * rLineInfo.GetDashLen() ) );
71  rLineInfo.SetDotLen( FRound( fScale * rLineInfo.GetDotLen() ) );
72  rLineInfo.SetDistance( FRound( fScale * rLineInfo.GetDistance() ) );
73  }
74 }
75 
76 } //anonymous namespace
77 
80 {
81 }
82 
84  mnType( nType )
85 {
86 }
87 
89  SimpleReferenceObject(), mnType( rOther.mnType )
90 {
91 }
92 
94 {
95 }
96 
98 {
99 }
100 
102 {
103  return new MetaAction;
104 }
105 
107 {
108 }
109 
110 void MetaAction::Scale( double, double )
111 {
112 }
113 
116 {}
117 
119 {}
120 
121 MetaPixelAction::MetaPixelAction( const Point& rPt, const Color& rColor ) :
123  maPt ( rPt ),
124  maColor ( rColor )
125 {}
126 
128 {
129  pOut->DrawPixel( maPt, maColor );
130 }
131 
133 {
134  return new MetaPixelAction( *this );
135 }
136 
137 void MetaPixelAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
138 {
139  maPt.Move( nHorzMove, nVertMove );
140 }
141 
142 void MetaPixelAction::Scale( double fScaleX, double fScaleY )
143 {
144  ImplScalePoint( maPt, fScaleX, fScaleY );
145 }
146 
149 {}
150 
152 {}
153 
154 MetaPointAction::MetaPointAction( const Point& rPt ) :
156  maPt ( rPt )
157 {}
158 
160 {
161  pOut->DrawPixel( maPt );
162 }
163 
165 {
166  return new MetaPointAction( *this );
167 }
168 
169 void MetaPointAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
170 {
171  maPt.Move( nHorzMove, nVertMove );
172 }
173 
174 void MetaPointAction::Scale( double fScaleX, double fScaleY )
175 {
176  ImplScalePoint( maPt, fScaleX, fScaleY );
177 }
178 
181 {}
182 
184 {}
185 
186 MetaLineAction::MetaLineAction( const Point& rStart, const Point& rEnd ) :
188  maStartPt ( rStart ),
189  maEndPt ( rEnd )
190 {}
191 
192 MetaLineAction::MetaLineAction( const Point& rStart, const Point& rEnd,
193  const LineInfo& rLineInfo ) :
195  maLineInfo ( rLineInfo ),
196  maStartPt ( rStart ),
197  maEndPt ( rEnd )
198 {}
199 
201 {
202  if( maLineInfo.IsDefault() )
203  pOut->DrawLine( maStartPt, maEndPt );
204  else
206 }
207 
209 {
210  return new MetaLineAction( *this );
211 }
212 
213 void MetaLineAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
214 {
215  maStartPt.Move( nHorzMove, nVertMove );
216  maEndPt.Move( nHorzMove, nVertMove );
217 }
218 
219 void MetaLineAction::Scale( double fScaleX, double fScaleY )
220 {
221  ImplScalePoint( maStartPt, fScaleX, fScaleY );
222  ImplScalePoint( maEndPt, fScaleX, fScaleY );
223  ImplScaleLineInfo( maLineInfo, fScaleX, fScaleY );
224 }
225 
228 {}
229 
231 {}
232 
235  maRect ( rRect )
236 {}
237 
239 {
240  pOut->DrawRect( maRect );
241 }
242 
244 {
245  return new MetaRectAction( *this );
246 }
247 
248 void MetaRectAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
249 {
250  maRect.Move( nHorzMove, nVertMove );
251 }
252 
253 void MetaRectAction::Scale( double fScaleX, double fScaleY )
254 {
255  ImplScaleRect( maRect, fScaleX, fScaleY );
256 }
257 
260  mnHorzRound ( 0 ),
261  mnVertRound ( 0 )
262 {}
263 
265 {}
266 
268  sal_uInt32 nHorzRound, sal_uInt32 nVertRound ) :
270  maRect ( rRect ),
271  mnHorzRound ( nHorzRound ),
272  mnVertRound ( nVertRound )
273 {}
274 
276 {
278 }
279 
281 {
282  return new MetaRoundRectAction( *this );
283 }
284 
286 {
287  maRect.Move( nHorzMove, nVertMove );
288 }
289 
290 void MetaRoundRectAction::Scale( double fScaleX, double fScaleY )
291 {
292  ImplScaleRect( maRect, fScaleX, fScaleY );
293  mnHorzRound = FRound( mnHorzRound * fabs(fScaleX) );
294  mnVertRound = FRound( mnVertRound * fabs(fScaleY) );
295 }
296 
299 {}
300 
302 {}
303 
306  maRect ( rRect )
307 {}
308 
310 {
311  pOut->DrawEllipse( maRect );
312 }
313 
315 {
316  return new MetaEllipseAction( *this );
317 }
318 
319 void MetaEllipseAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
320 {
321  maRect.Move( nHorzMove, nVertMove );
322 }
323 
324 void MetaEllipseAction::Scale( double fScaleX, double fScaleY )
325 {
326  ImplScaleRect( maRect, fScaleX, fScaleY );
327 }
328 
331 {}
332 
334 {}
335 
337  const Point& rStart, const Point& rEnd ) :
339  maRect ( rRect ),
340  maStartPt ( rStart ),
341  maEndPt ( rEnd )
342 {}
343 
345 {
346  pOut->DrawArc( maRect, maStartPt, maEndPt );
347 }
348 
350 {
351  return new MetaArcAction( *this );
352 }
353 
354 void MetaArcAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
355 {
356  maRect.Move( nHorzMove, nVertMove );
357  maStartPt.Move( nHorzMove, nVertMove );
358  maEndPt.Move( nHorzMove, nVertMove );
359 }
360 
361 void MetaArcAction::Scale( double fScaleX, double fScaleY )
362 {
363  ImplScaleRect( maRect, fScaleX, fScaleY );
364  ImplScalePoint( maStartPt, fScaleX, fScaleY );
365  ImplScalePoint( maEndPt, fScaleX, fScaleY );
366 }
367 
370 {}
371 
373 {}
374 
376  const Point& rStart, const Point& rEnd ) :
378  maRect ( rRect ),
379  maStartPt ( rStart ),
380  maEndPt ( rEnd )
381 {}
382 
384 {
385  pOut->DrawPie( maRect, maStartPt, maEndPt );
386 }
387 
389 {
390  return new MetaPieAction( *this );
391 }
392 
393 void MetaPieAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
394 {
395  maRect.Move( nHorzMove, nVertMove );
396  maStartPt.Move( nHorzMove, nVertMove );
397  maEndPt.Move( nHorzMove, nVertMove );
398 }
399 
400 void MetaPieAction::Scale( double fScaleX, double fScaleY )
401 {
402  ImplScaleRect( maRect, fScaleX, fScaleY );
403  ImplScalePoint( maStartPt, fScaleX, fScaleY );
404  ImplScalePoint( maEndPt, fScaleX, fScaleY );
405 }
406 
409 {}
410 
412 {}
413 
415  const Point& rStart, const Point& rEnd ) :
417  maRect ( rRect ),
418  maStartPt ( rStart ),
419  maEndPt ( rEnd )
420 {}
421 
423 {
424  pOut->DrawChord( maRect, maStartPt, maEndPt );
425 }
426 
428 {
429  return new MetaChordAction( *this );
430 }
431 
432 void MetaChordAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
433 {
434  maRect.Move( nHorzMove, nVertMove );
435  maStartPt.Move( nHorzMove, nVertMove );
436  maEndPt.Move( nHorzMove, nVertMove );
437 }
438 
439 void MetaChordAction::Scale( double fScaleX, double fScaleY )
440 {
441  ImplScaleRect( maRect, fScaleX, fScaleY );
442  ImplScalePoint( maStartPt, fScaleX, fScaleY );
443  ImplScalePoint( maEndPt, fScaleX, fScaleY );
444 }
445 
448 {}
449 
451 {}
452 
455  maPoly ( rPoly )
456 {}
457 
460  maLineInfo ( rLineInfo ),
461  maPoly ( rPoly )
462 {}
463 
465 {
466  if( maLineInfo.IsDefault() )
467  pOut->DrawPolyLine( maPoly );
468  else
469  pOut->DrawPolyLine( maPoly, maLineInfo );
470 }
471 
473 {
474  return new MetaPolyLineAction( *this );
475 }
476 
478 {
479  maPoly.Move( nHorzMove, nVertMove );
480 }
481 
482 void MetaPolyLineAction::Scale( double fScaleX, double fScaleY )
483 {
484  ImplScalePoly( maPoly, fScaleX, fScaleY );
485  ImplScaleLineInfo( maLineInfo, fScaleX, fScaleY );
486 }
487 
490 {}
491 
493 {}
494 
497  maPoly ( rPoly )
498 {}
499 
501 {
502  pOut->DrawPolygon( maPoly );
503 }
504 
506 {
507  return new MetaPolygonAction( *this );
508 }
509 
510 void MetaPolygonAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
511 {
512  maPoly.Move( nHorzMove, nVertMove );
513 }
514 
515 void MetaPolygonAction::Scale( double fScaleX, double fScaleY )
516 {
517  ImplScalePoly( maPoly, fScaleX, fScaleY );
518 }
519 
522 {}
523 
525 {}
526 
529  maPolyPoly ( rPolyPoly )
530 {}
531 
533 {
534  pOut->DrawPolyPolygon( maPolyPoly );
535 }
536 
538 {
539  return new MetaPolyPolygonAction( *this );
540 }
541 
543 {
544  maPolyPoly.Move( nHorzMove, nVertMove );
545 }
546 
547 void MetaPolyPolygonAction::Scale( double fScaleX, double fScaleY )
548 {
549  for( sal_uInt16 i = 0, nCount = maPolyPoly.Count(); i < nCount; i++ )
550  ImplScalePoly( maPolyPoly[ i ], fScaleX, fScaleY );
551 }
552 
555  mnIndex ( 0 ),
556  mnLen ( 0 )
557 {}
558 
560 {}
561 
562 MetaTextAction::MetaTextAction( const Point& rPt, const OUString& rStr,
563  sal_Int32 nIndex, sal_Int32 nLen ) :
565  maPt ( rPt ),
566  maStr ( rStr ),
567  mnIndex ( nIndex ),
568  mnLen ( nLen )
569 {}
570 
572 {
573  pOut->DrawText( maPt, maStr, mnIndex, mnLen );
574 }
575 
577 {
578  return new MetaTextAction( *this );
579 }
580 
581 void MetaTextAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
582 {
583  maPt.Move( nHorzMove, nVertMove );
584 }
585 
586 void MetaTextAction::Scale( double fScaleX, double fScaleY )
587 {
588  ImplScalePoint( maPt, fScaleX, fScaleY );
589 }
590 
591 MetaTextArrayAction::MetaTextArrayAction() :
593  mnIndex ( 0 ),
594  mnLen ( 0 )
595 {}
596 
597 MetaTextArrayAction::MetaTextArrayAction( const MetaTextArrayAction& rAction ) :
599  maStartPt ( rAction.maStartPt ),
600  maStr ( rAction.maStr ),
601  maDXAry ( rAction.maDXAry ),
602  mnIndex ( rAction.mnIndex ),
603  mnLen ( rAction.mnLen )
604 {
605 }
606 
607 MetaTextArrayAction::MetaTextArrayAction( const Point& rStartPt,
608  const OUString& rStr,
609  const std::vector<sal_Int32>& rDXAry,
610  sal_Int32 nIndex,
611  sal_Int32 nLen ) :
613  maStartPt ( rStartPt ),
614  maStr ( rStr ),
615  maDXAry ( rDXAry ),
616  mnIndex ( nIndex ),
617  mnLen ( nLen )
618 {
619 }
620 
621 MetaTextArrayAction::MetaTextArrayAction( const Point& rStartPt,
622  const OUString& rStr,
624  sal_Int32 nIndex,
625  sal_Int32 nLen ) :
627  maStartPt ( rStartPt ),
628  maStr ( rStr ),
629  maDXAry ( pDXAry.begin(), pDXAry.end() ),
630  mnIndex ( nIndex ),
631  mnLen ( nLen )
632 {
633 }
634 
635 MetaTextArrayAction::~MetaTextArrayAction()
636 {
637 }
638 
639 void MetaTextArrayAction::Execute( OutputDevice* pOut )
640 {
641  pOut->DrawTextArray( maStartPt, maStr, maDXAry, mnIndex, mnLen );
642 }
643 
644 rtl::Reference<MetaAction> MetaTextArrayAction::Clone() const
645 {
646  return new MetaTextArrayAction( *this );
647 }
648 
649 void MetaTextArrayAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
650 {
651  maStartPt.Move( nHorzMove, nVertMove );
652 }
653 
654 void MetaTextArrayAction::Scale( double fScaleX, double fScaleY )
655 {
656  ImplScalePoint( maStartPt, fScaleX, fScaleY );
657 
658  if ( !maDXAry.empty() && mnLen )
659  {
660  for ( sal_uInt16 i = 0, nCount = mnLen; i < nCount; i++ )
661  maDXAry[ i ] = FRound( maDXAry[ i ] * fabs(fScaleX) );
662  }
663 }
664 
665 void MetaTextArrayAction::SetDXArray(std::vector<sal_Int32> aArray)
666 {
667  maDXAry = std::move(aArray);
668 }
669 
672  mnWidth ( 0 ),
673  mnIndex ( 0 ),
674  mnLen ( 0 )
675 {}
676 
678 {}
679 
680 MetaStretchTextAction::MetaStretchTextAction( const Point& rPt, sal_uInt32 nWidth,
681  const OUString& rStr,
682  sal_Int32 nIndex, sal_Int32 nLen ) :
684  maPt ( rPt ),
685  maStr ( rStr ),
686  mnWidth ( nWidth ),
687  mnIndex ( nIndex ),
688  mnLen ( nLen )
689 {}
690 
692 {
694 }
695 
697 {
698  return new MetaStretchTextAction( *this );
699 }
700 
702 {
703  maPt.Move( nHorzMove, nVertMove );
704 }
705 
706 void MetaStretchTextAction::Scale( double fScaleX, double fScaleY )
707 {
708  ImplScalePoint( maPt, fScaleX, fScaleY );
709  mnWidth = static_cast<sal_uLong>(FRound( mnWidth * fabs(fScaleX) ));
710 }
713  mnStyle ( DrawTextFlags::NONE )
714 {}
715 
717 {}
718 
720  const OUString& rStr, DrawTextFlags nStyle ) :
722  maRect ( rRect ),
723  maStr ( rStr ),
724  mnStyle ( nStyle )
725 {}
726 
728 {
729  pOut->DrawText( maRect, maStr, mnStyle );
730 }
731 
733 {
734  return new MetaTextRectAction( *this );
735 }
736 
738 {
739  maRect.Move( nHorzMove, nVertMove );
740 }
741 
742 void MetaTextRectAction::Scale( double fScaleX, double fScaleY )
743 {
744  ImplScaleRect( maRect, fScaleX, fScaleY );
745 }
746 
749  mnWidth ( 0 ),
750  meStrikeout ( STRIKEOUT_NONE ),
751  meUnderline ( LINESTYLE_NONE ),
752  meOverline ( LINESTYLE_NONE )
753 {}
754 
756 {}
757 
759  FontStrikeout eStrikeout,
760  FontLineStyle eUnderline,
761  FontLineStyle eOverline ) :
763  maPos ( rPos ),
764  mnWidth ( nWidth ),
765  meStrikeout ( eStrikeout ),
766  meUnderline ( eUnderline ),
767  meOverline ( eOverline )
768 {}
769 
771 {
773 }
774 
776 {
777  return new MetaTextLineAction( *this );
778 }
779 
781 {
782  maPos.Move( nHorzMove, nVertMove );
783 }
784 
785 void MetaTextLineAction::Scale( double fScaleX, double fScaleY )
786 {
787  ImplScalePoint( maPos, fScaleX, fScaleY );
788  mnWidth = FRound( mnWidth * fabs(fScaleX) );
789 }
790 
793 {}
794 
796 {}
797 
798 MetaBmpAction::MetaBmpAction( const Point& rPt, const Bitmap& rBmp ) :
800  maBmp ( rBmp ),
801  maPt ( rPt )
802 {}
803 
805 {
806  pOut->DrawBitmap( maPt, maBmp );
807 }
808 
810 {
811  return new MetaBmpAction( *this );
812 }
813 
814 void MetaBmpAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
815 {
816  maPt.Move( nHorzMove, nVertMove );
817 }
818 
819 void MetaBmpAction::Scale( double fScaleX, double fScaleY )
820 {
821  ImplScalePoint( maPt, fScaleX, fScaleY );
822 }
823 
826 {}
827 
829 {}
830 
831 MetaBmpScaleAction::MetaBmpScaleAction( const Point& rPt, const Size& rSz,
832  const Bitmap& rBmp ) :
834  maBmp ( rBmp ),
835  maPt ( rPt ),
836  maSz ( rSz )
837 {}
838 
840 {
841  pOut->DrawBitmap( maPt, maSz, maBmp );
842 }
843 
845 {
846  return new MetaBmpScaleAction( *this );
847 }
848 
850 {
851  maPt.Move( nHorzMove, nVertMove );
852 }
853 
854 void MetaBmpScaleAction::Scale( double fScaleX, double fScaleY )
855 {
856  tools::Rectangle aRectangle(maPt, maSz);
857  ImplScaleRect( aRectangle, fScaleX, fScaleY );
858  maPt = aRectangle.TopLeft();
859  maSz = aRectangle.GetSize();
860 }
861 
862 MetaBmpScalePartAction::MetaBmpScalePartAction() :
864 {}
865 
866 MetaBmpScalePartAction::~MetaBmpScalePartAction()
867 {}
868 
869 MetaBmpScalePartAction::MetaBmpScalePartAction( const Point& rDstPt, const Size& rDstSz,
870  const Point& rSrcPt, const Size& rSrcSz,
871  const Bitmap& rBmp ) :
873  maBmp ( rBmp ),
874  maDstPt ( rDstPt ),
875  maDstSz ( rDstSz ),
876  maSrcPt ( rSrcPt ),
877  maSrcSz ( rSrcSz )
878 {}
879 
880 void MetaBmpScalePartAction::Execute( OutputDevice* pOut )
881 {
882  pOut->DrawBitmap( maDstPt, maDstSz, maSrcPt, maSrcSz, maBmp );
883 }
884 
885 rtl::Reference<MetaAction> MetaBmpScalePartAction::Clone() const
886 {
887  return new MetaBmpScalePartAction( *this );
888 }
889 
890 void MetaBmpScalePartAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
891 {
892  maDstPt.Move( nHorzMove, nVertMove );
893 }
894 
895 void MetaBmpScalePartAction::Scale( double fScaleX, double fScaleY )
896 {
897  tools::Rectangle aRectangle(maDstPt, maDstSz);
898  ImplScaleRect( aRectangle, fScaleX, fScaleY );
899  maDstPt = aRectangle.TopLeft();
900  maDstSz = aRectangle.GetSize();
901 }
902 
905 {}
906 
908 {}
909 
910 MetaBmpExAction::MetaBmpExAction( const Point& rPt, const BitmapEx& rBmpEx ) :
912  maBmpEx ( rBmpEx ),
913  maPt ( rPt )
914 {}
915 
917 {
918  pOut->DrawBitmapEx( maPt, maBmpEx );
919 }
920 
922 {
923  return new MetaBmpExAction( *this );
924 }
925 
926 void MetaBmpExAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
927 {
928  maPt.Move( nHorzMove, nVertMove );
929 }
930 
931 void MetaBmpExAction::Scale( double fScaleX, double fScaleY )
932 {
933  ImplScalePoint( maPt, fScaleX, fScaleY );
934 }
935 
938 {}
939 
941 {}
942 
943 MetaBmpExScaleAction::MetaBmpExScaleAction( const Point& rPt, const Size& rSz,
944  const BitmapEx& rBmpEx ) :
946  maBmpEx ( rBmpEx ),
947  maPt ( rPt ),
948  maSz ( rSz )
949 {}
950 
952 {
953  pOut->DrawBitmapEx( maPt, maSz, maBmpEx );
954 }
955 
957 {
958  return new MetaBmpExScaleAction( *this );
959 }
960 
962 {
963  maPt.Move( nHorzMove, nVertMove );
964 }
965 
966 void MetaBmpExScaleAction::Scale( double fScaleX, double fScaleY )
967 {
968  tools::Rectangle aRectangle(maPt, maSz);
969  ImplScaleRect( aRectangle, fScaleX, fScaleY );
970  maPt = aRectangle.TopLeft();
971  maSz = aRectangle.GetSize();
972 }
973 
974 MetaBmpExScalePartAction::MetaBmpExScalePartAction() :
976 {}
977 
978 MetaBmpExScalePartAction::~MetaBmpExScalePartAction()
979 {}
980 
981 MetaBmpExScalePartAction::MetaBmpExScalePartAction( const Point& rDstPt, const Size& rDstSz,
982  const Point& rSrcPt, const Size& rSrcSz,
983  const BitmapEx& rBmpEx ) :
985  maBmpEx ( rBmpEx ),
986  maDstPt ( rDstPt ),
987  maDstSz ( rDstSz ),
988  maSrcPt ( rSrcPt ),
989  maSrcSz ( rSrcSz )
990 {}
991 
992 void MetaBmpExScalePartAction::Execute( OutputDevice* pOut )
993 {
994  pOut->DrawBitmapEx( maDstPt, maDstSz, maSrcPt, maSrcSz, maBmpEx );
995 }
996 
997 rtl::Reference<MetaAction> MetaBmpExScalePartAction::Clone() const
998 {
999  return new MetaBmpExScalePartAction( *this );
1000 }
1001 
1002 void MetaBmpExScalePartAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
1003 {
1004  maDstPt.Move( nHorzMove, nVertMove );
1005 }
1006 
1007 void MetaBmpExScalePartAction::Scale( double fScaleX, double fScaleY )
1008 {
1009  tools::Rectangle aRectangle(maDstPt, maDstSz);
1010  ImplScaleRect( aRectangle, fScaleX, fScaleY );
1011  maDstPt = aRectangle.TopLeft();
1012  maDstSz = aRectangle.GetSize();
1013 }
1014 
1017 {}
1018 
1020 {}
1021 
1023  const Bitmap& rBmp,
1024  const Color& rColor ) :
1026  maBmp ( rBmp ),
1027  maColor ( rColor ),
1028  maPt ( rPt )
1029 {}
1030 
1032 {
1033  pOut->DrawMask( maPt, maBmp, maColor );
1034 }
1035 
1037 {
1038  return new MetaMaskAction( *this );
1039 }
1040 
1041 void MetaMaskAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
1042 {
1043  maPt.Move( nHorzMove, nVertMove );
1044 }
1045 
1046 void MetaMaskAction::Scale( double fScaleX, double fScaleY )
1047 {
1048  ImplScalePoint( maPt, fScaleX, fScaleY );
1049 }
1050 
1053 {}
1054 
1056 {}
1057 
1058 MetaMaskScaleAction::MetaMaskScaleAction( const Point& rPt, const Size& rSz,
1059  const Bitmap& rBmp,
1060  const Color& rColor ) :
1062  maBmp ( rBmp ),
1063  maColor ( rColor ),
1064  maPt ( rPt ),
1065  maSz ( rSz )
1066 {}
1067 
1069 {
1070  pOut->DrawMask( maPt, maSz, maBmp, maColor );
1071 }
1072 
1074 {
1075  return new MetaMaskScaleAction( *this );
1076 }
1077 
1079 {
1080  maPt.Move( nHorzMove, nVertMove );
1081 }
1082 
1083 void MetaMaskScaleAction::Scale( double fScaleX, double fScaleY )
1084 {
1085  tools::Rectangle aRectangle(maPt, maSz);
1086  ImplScaleRect( aRectangle, fScaleX, fScaleY );
1087  maPt = aRectangle.TopLeft();
1088  maSz = aRectangle.GetSize();
1089 }
1090 
1093 {}
1094 
1096 {}
1097 
1098 MetaMaskScalePartAction::MetaMaskScalePartAction( const Point& rDstPt, const Size& rDstSz,
1099  const Point& rSrcPt, const Size& rSrcSz,
1100  const Bitmap& rBmp,
1101  const Color& rColor ) :
1103  maBmp ( rBmp ),
1104  maColor ( rColor ),
1105  maDstPt ( rDstPt ),
1106  maDstSz ( rDstSz ),
1107  maSrcPt ( rSrcPt ),
1108  maSrcSz ( rSrcSz )
1109 {}
1110 
1112 {
1114 }
1115 
1117 {
1118  return new MetaMaskScalePartAction( *this );
1119 }
1120 
1122 {
1123  maDstPt.Move( nHorzMove, nVertMove );
1124 }
1125 
1126 void MetaMaskScalePartAction::Scale( double fScaleX, double fScaleY )
1127 {
1128  tools::Rectangle aRectangle(maDstPt, maDstSz);
1129  ImplScaleRect( aRectangle, fScaleX, fScaleY );
1130  maDstPt = aRectangle.TopLeft();
1131  maDstSz = aRectangle.GetSize();
1132 }
1133 
1136 {}
1137 
1139 {}
1140 
1143  maRect ( rRect ),
1144  maGradient ( rGradient )
1145 {}
1146 
1148 {
1149  pOut->DrawGradient( maRect, maGradient );
1150 }
1151 
1153 {
1154  return new MetaGradientAction( *this );
1155 }
1156 
1158 {
1159  maRect.Move( nHorzMove, nVertMove );
1160 }
1161 
1162 void MetaGradientAction::Scale( double fScaleX, double fScaleY )
1163 {
1164  ImplScaleRect( maRect, fScaleX, fScaleY );
1165 }
1166 
1169 {}
1170 
1173  maPolyPoly ( rPolyPoly ),
1174  maGradient ( rGradient )
1175 {}
1176 
1178 {}
1179 
1181 {
1182  if( pOut->GetConnectMetaFile() )
1183  {
1184  pOut->GetConnectMetaFile()->AddAction( this );
1185  }
1186 }
1187 
1189 {
1190  return new MetaGradientExAction( *this );
1191 }
1192 
1194 {
1195  maPolyPoly.Move( nHorzMove, nVertMove );
1196 }
1197 
1198 void MetaGradientExAction::Scale( double fScaleX, double fScaleY )
1199 {
1200  for( sal_uInt16 i = 0, nCount = maPolyPoly.Count(); i < nCount; i++ )
1201  ImplScalePoly( maPolyPoly[ i ], fScaleX, fScaleY );
1202 }
1203 
1206 {}
1207 
1209 {}
1210 
1211 MetaHatchAction::MetaHatchAction( const tools::PolyPolygon& rPolyPoly, const Hatch& rHatch ) :
1213  maPolyPoly ( rPolyPoly ),
1214  maHatch ( rHatch )
1215 {}
1216 
1218 {
1219  pOut->DrawHatch( maPolyPoly, maHatch );
1220 }
1221 
1223 {
1224  return new MetaHatchAction( *this );
1225 }
1226 
1227 void MetaHatchAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
1228 {
1229  maPolyPoly.Move( nHorzMove, nVertMove );
1230 }
1231 
1232 void MetaHatchAction::Scale( double fScaleX, double fScaleY )
1233 {
1234  for( sal_uInt16 i = 0, nCount = maPolyPoly.Count(); i < nCount; i++ )
1235  ImplScalePoly( maPolyPoly[ i ], fScaleX, fScaleY );
1236 }
1237 
1238 MetaWallpaperAction::MetaWallpaperAction() :
1240 {}
1241 
1242 MetaWallpaperAction::~MetaWallpaperAction()
1243 {}
1244 
1245 MetaWallpaperAction::MetaWallpaperAction( const tools::Rectangle& rRect,
1246  const Wallpaper& rPaper ) :
1248  maRect ( rRect ),
1249  maWallpaper ( rPaper )
1250 {}
1251 
1252 void MetaWallpaperAction::Execute( OutputDevice* pOut )
1253 {
1254  pOut->DrawWallpaper( maRect, maWallpaper );
1255 }
1256 
1257 rtl::Reference<MetaAction> MetaWallpaperAction::Clone() const
1258 {
1259  return new MetaWallpaperAction( *this );
1260 }
1261 
1262 void MetaWallpaperAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
1263 {
1264  maRect.Move( nHorzMove, nVertMove );
1265 }
1266 
1267 void MetaWallpaperAction::Scale( double fScaleX, double fScaleY )
1268 {
1269  ImplScaleRect( maRect, fScaleX, fScaleY );
1270 }
1271 
1274  mbClip ( false )
1275 {}
1276 
1278 {}
1279 
1282  maRegion ( rRegion ),
1283  mbClip ( bClip )
1284 {}
1285 
1287 {
1288  if( mbClip )
1289  pOut->SetClipRegion( maRegion );
1290  else
1291  pOut->SetClipRegion();
1292 }
1293 
1295 {
1296  return new MetaClipRegionAction( *this );
1297 }
1298 
1300 {
1301  maRegion.Move( nHorzMove, nVertMove );
1302 }
1303 
1304 void MetaClipRegionAction::Scale( double fScaleX, double fScaleY )
1305 {
1306  maRegion.Scale( fScaleX, fScaleY );
1307 }
1308 
1311 {}
1312 
1314 {}
1315 
1318  maRect ( rRect )
1319 {}
1320 
1322 {
1323  pOut->IntersectClipRegion( maRect );
1324 }
1325 
1327 {
1328  return new MetaISectRectClipRegionAction( *this );
1329 }
1330 
1332 {
1333  maRect.Move( nHorzMove, nVertMove );
1334 }
1335 
1336 void MetaISectRectClipRegionAction::Scale( double fScaleX, double fScaleY )
1337 {
1338  ImplScaleRect( maRect, fScaleX, fScaleY );
1339 }
1340 
1343 {}
1344 
1346 {}
1347 
1350  maRegion ( rRegion )
1351 {
1352 }
1353 
1355 {
1356  pOut->IntersectClipRegion( maRegion );
1357 }
1358 
1360 {
1361  return new MetaISectRegionClipRegionAction( *this );
1362 }
1363 
1365 {
1366  maRegion.Move( nHorzMove, nVertMove );
1367 }
1368 
1369 void MetaISectRegionClipRegionAction::Scale( double fScaleX, double fScaleY )
1370 {
1371  maRegion.Scale( fScaleX, fScaleY );
1372 }
1373 
1376  mnHorzMove ( 0 ),
1377  mnVertMove ( 0 )
1378 {}
1379 
1381 {}
1382 
1385  mnHorzMove ( nHorzMove ),
1386  mnVertMove ( nVertMove )
1387 {}
1388 
1390 {
1392 }
1393 
1395 {
1396  return new MetaMoveClipRegionAction( *this );
1397 }
1398 
1399 void MetaMoveClipRegionAction::Scale( double fScaleX, double fScaleY )
1400 {
1401  mnHorzMove = FRound( mnHorzMove * fScaleX );
1402  mnVertMove = FRound( mnVertMove * fScaleY );
1403 }
1404 
1407  mbSet ( false )
1408 {}
1409 
1411 {}
1412 
1415  maColor ( rColor ),
1416  mbSet ( bSet )
1417 {}
1418 
1420 {
1421  if( mbSet )
1422  pOut->SetLineColor( maColor );
1423  else
1424  pOut->SetLineColor();
1425 }
1426 
1428 {
1429  return new MetaLineColorAction( *this );
1430 }
1431 
1434  mbSet ( false )
1435 {}
1436 
1438 {}
1439 
1442  maColor ( rColor ),
1443  mbSet ( bSet )
1444 {}
1445 
1447 {
1448  if( mbSet )
1449  pOut->SetFillColor( maColor );
1450  else
1451  pOut->SetFillColor();
1452 }
1453 
1455 {
1456  return new MetaFillColorAction( *this );
1457 }
1458 
1461 {}
1462 
1464 {}
1465 
1468  maColor ( rColor )
1469 {}
1470 
1472 {
1473  pOut->SetTextColor( maColor );
1474 }
1475 
1477 {
1478  return new MetaTextColorAction( *this );
1479 }
1480 
1483  mbSet ( false )
1484 {}
1485 
1487 {}
1488 
1491  maColor ( rColor ),
1492  mbSet ( bSet )
1493 {}
1494 
1496 {
1497  if( mbSet )
1498  pOut->SetTextFillColor( maColor );
1499  else
1500  pOut->SetTextFillColor();
1501 }
1502 
1504 {
1505  return new MetaTextFillColorAction( *this );
1506 }
1507 
1510  mbSet ( false )
1511 {}
1512 
1514 {}
1515 
1518  maColor ( rColor ),
1519  mbSet ( bSet )
1520 {}
1521 
1523 {
1524  if( mbSet )
1525  pOut->SetTextLineColor( maColor );
1526  else
1527  pOut->SetTextLineColor();
1528 }
1529 
1531 {
1532  return new MetaTextLineColorAction( *this );
1533 }
1534 
1537  mbSet ( false )
1538 {}
1539 
1541 {}
1542 
1545  maColor ( rColor ),
1546  mbSet ( bSet )
1547 {}
1548 
1550 {
1551  if( mbSet )
1552  pOut->SetOverlineColor( maColor );
1553  else
1554  pOut->SetOverlineColor();
1555 }
1556 
1558 {
1559  return new MetaOverlineColorAction( *this );
1560 }
1561 
1564  maAlign ( ALIGN_TOP )
1565 {}
1566 
1568 {}
1569 
1572  maAlign ( aAlign )
1573 {}
1574 
1576 {
1577  pOut->SetTextAlign( maAlign );
1578 }
1579 
1581 {
1582  return new MetaTextAlignAction( *this );
1583 }
1584 
1587 {}
1588 
1590 {}
1591 
1594  maMapMode ( rMapMode )
1595 {}
1596 
1598 {
1599  pOut->SetMapMode( maMapMode );
1600 }
1601 
1603 {
1604  return new MetaMapModeAction( *this );
1605 }
1606 
1607 void MetaMapModeAction::Scale( double fScaleX, double fScaleY )
1608 {
1609  Point aPoint( maMapMode.GetOrigin() );
1610 
1611  ImplScalePoint( aPoint, fScaleX, fScaleY );
1612  maMapMode.SetOrigin( aPoint );
1613 }
1614 
1617 {}
1618 
1620 {}
1621 
1624  maFont ( rFont )
1625 {
1626  // #96876: because RTL_TEXTENCODING_SYMBOL is often set at the StarSymbol font,
1627  // we change the textencoding to RTL_TEXTENCODING_UNICODE here, which seems
1628  // to be the right way; changing the textencoding at other sources
1629  // is too dangerous at the moment
1631  && ( maFont.GetCharSet() != RTL_TEXTENCODING_UNICODE ) )
1632  {
1633  maFont.SetCharSet( RTL_TEXTENCODING_UNICODE );
1634  }
1635 }
1636 
1638 {
1639  pOut->SetFont( maFont );
1640 }
1641 
1643 {
1644  return new MetaFontAction( *this );
1645 }
1646 
1647 void MetaFontAction::Scale( double fScaleX, double fScaleY )
1648 {
1649  const Size aSize(
1650  FRound(maFont.GetFontSize().Width() * fabs(fScaleX)),
1651  FRound(maFont.GetFontSize().Height() * fabs(fScaleY)));
1652  maFont.SetFontSize( aSize );
1653 }
1654 
1657  mnFlags ( vcl::PushFlags::NONE )
1658 {}
1659 
1661 {}
1662 
1665  mnFlags ( nFlags )
1666 {}
1667 
1669 {
1670  pOut->Push( mnFlags );
1671 }
1672 
1674 {
1675  return new MetaPushAction( *this );
1676 }
1677 
1680 {}
1681 
1683 {}
1684 
1686 {
1687  pOut->Pop();
1688 }
1689 
1691 {
1692  return new MetaPopAction( *this );
1693 }
1694 
1697  meRasterOp ( RasterOp::OverPaint )
1698 {}
1699 
1701 {}
1702 
1705  meRasterOp ( eRasterOp )
1706 {
1707 }
1708 
1710 {
1711  pOut->SetRasterOp( meRasterOp );
1712 }
1713 
1715 {
1716  return new MetaRasterOpAction( *this );
1717 }
1718 
1721  mnTransPercent ( 0 )
1722 {}
1723 
1725 {}
1726 
1727 MetaTransparentAction::MetaTransparentAction( const tools::PolyPolygon& rPolyPoly, sal_uInt16 nTransPercent ) :
1729  maPolyPoly ( rPolyPoly ),
1730  mnTransPercent ( nTransPercent )
1731 {}
1732 
1734 {
1736 }
1737 
1739 {
1740  return new MetaTransparentAction( *this );
1741 }
1742 
1744 {
1745  maPolyPoly.Move( nHorzMove, nVertMove );
1746 }
1747 
1748 void MetaTransparentAction::Scale( double fScaleX, double fScaleY )
1749 {
1750  for( sal_uInt16 i = 0, nCount = maPolyPoly.Count(); i < nCount; i++ )
1751  ImplScalePoly( maPolyPoly[ i ], fScaleX, fScaleY );
1752 }
1753 
1756 {}
1757 
1759 {}
1760 
1762  const Size& rSize, const Gradient& rGradient ) :
1764  maMtf ( rMtf ),
1765  maPoint ( rPos ),
1766  maSize ( rSize ),
1767  maGradient ( rGradient )
1768 {}
1769 
1771 {
1773 }
1774 
1776 {
1777  return new MetaFloatTransparentAction( *this );
1778 }
1779 
1781 {
1782  maPoint.Move( nHorzMove, nVertMove );
1783 }
1784 
1785 void MetaFloatTransparentAction::Scale( double fScaleX, double fScaleY )
1786 {
1787  tools::Rectangle aRectangle(maPoint, maSize);
1788  ImplScaleRect( aRectangle, fScaleX, fScaleY );
1789  maPoint = aRectangle.TopLeft();
1790  maSize = aRectangle.GetSize();
1791 }
1792 
1795 {}
1796 
1798 {}
1799 
1800 MetaEPSAction::MetaEPSAction( const Point& rPoint, const Size& rSize,
1801  const GfxLink& rGfxLink, const GDIMetaFile& rSubst ) :
1803  maGfxLink ( rGfxLink ),
1804  maSubst ( rSubst ),
1805  maPoint ( rPoint ),
1806  maSize ( rSize )
1807 {}
1808 
1810 {
1811  pOut->DrawEPS( maPoint, maSize, maGfxLink, &maSubst );
1812 }
1813 
1815 {
1816  return new MetaEPSAction( *this );
1817 }
1818 
1819 void MetaEPSAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
1820 {
1821  maPoint.Move( nHorzMove, nVertMove );
1822 }
1823 
1824 void MetaEPSAction::Scale( double fScaleX, double fScaleY )
1825 {
1826  tools::Rectangle aRectangle(maPoint, maSize);
1827  ImplScaleRect( aRectangle, fScaleX, fScaleY );
1828  maPoint = aRectangle.TopLeft();
1829  maSize = aRectangle.GetSize();
1830 }
1831 
1834  mbSet ( false )
1835 {}
1836 
1838 {}
1839 
1840 MetaRefPointAction::MetaRefPointAction( const Point& rRefPoint, bool bSet ) :
1842  maRefPoint ( rRefPoint ),
1843  mbSet ( bSet )
1844 {}
1845 
1847 {
1848  if( mbSet )
1849  pOut->SetRefPoint( maRefPoint );
1850  else
1851  pOut->SetRefPoint();
1852 }
1853 
1855 {
1856  return new MetaRefPointAction( *this );
1857 }
1858 
1861  mnValue ( 0 )
1862 {
1863  ImplInitDynamicData( nullptr, 0UL );
1864 }
1865 
1868  maComment ( rAct.maComment ),
1869  mnValue ( rAct.mnValue )
1870 {
1871  ImplInitDynamicData( rAct.mpData.get(), rAct.mnDataSize );
1872 }
1873 
1874 MetaCommentAction::MetaCommentAction( const OString& rComment, sal_Int32 nValue, const sal_uInt8* pData, sal_uInt32 nDataSize ) :
1876  maComment ( rComment ),
1877  mnValue ( nValue )
1878 {
1879  ImplInitDynamicData( pData, nDataSize );
1880 }
1881 
1883 {
1884 }
1885 
1886 void MetaCommentAction::ImplInitDynamicData( const sal_uInt8* pData, sal_uInt32 nDataSize )
1887 {
1888  if ( nDataSize && pData )
1889  {
1890  mnDataSize = nDataSize;
1891  mpData.reset( new sal_uInt8[ mnDataSize ] );
1892  memcpy( mpData.get(), pData, mnDataSize );
1893  }
1894  else
1895  {
1896  mnDataSize = 0;
1897  mpData = nullptr;
1898  }
1899 }
1900 
1902 {
1903  if ( pOut->GetConnectMetaFile() )
1904  {
1905  pOut->GetConnectMetaFile()->AddAction( this );
1906  }
1907 }
1908 
1910 {
1911  return new MetaCommentAction( *this );
1912 }
1913 
1915 {
1916  if ( !(nXMove || nYMove) )
1917  return;
1918 
1919  if ( !(mnDataSize && mpData) )
1920  return;
1921 
1922  bool bPathStroke = (maComment == "XPATHSTROKE_SEQ_BEGIN");
1923  if ( !(bPathStroke || maComment == "XPATHFILL_SEQ_BEGIN") )
1924  return;
1925 
1926  SvMemoryStream aMemStm( static_cast<void*>(mpData.get()), mnDataSize, StreamMode::READ );
1927  SvMemoryStream aDest;
1928  if ( bPathStroke )
1929  {
1930  SvtGraphicStroke aStroke;
1931  ReadSvtGraphicStroke( aMemStm, aStroke );
1932 
1933  tools::Polygon aPath;
1934  aStroke.getPath( aPath );
1935  aPath.Move( nXMove, nYMove );
1936  aStroke.setPath( aPath );
1937 
1938  tools::PolyPolygon aStartArrow;
1939  aStroke.getStartArrow(aStartArrow);
1940  aStartArrow.Move(nXMove, nYMove);
1941  aStroke.setStartArrow(aStartArrow);
1942 
1943  tools::PolyPolygon aEndArrow;
1944  aStroke.getEndArrow(aEndArrow);
1945  aEndArrow.Move(nXMove, nYMove);
1946  aStroke.setEndArrow(aEndArrow);
1947 
1948  WriteSvtGraphicStroke( aDest, aStroke );
1949  }
1950  else
1951  {
1952  SvtGraphicFill aFill;
1953  ReadSvtGraphicFill( aMemStm, aFill );
1954 
1955  tools::PolyPolygon aPath;
1956  aFill.getPath( aPath );
1957  aPath.Move( nXMove, nYMove );
1958  aFill.setPath( aPath );
1959 
1960  WriteSvtGraphicFill( aDest, aFill );
1961  }
1962  mpData.reset();
1963  ImplInitDynamicData( static_cast<const sal_uInt8*>( aDest.GetData() ), aDest.Tell() );
1964 }
1965 
1966 // SJ: 25.07.06 #i56656# we are not able to mirror certain kind of
1967 // comments properly, especially the XPATHSTROKE and XPATHFILL lead to
1968 // problems, so it is better to remove these comments when mirroring
1969 // FIXME: fake comment to apply the next hunk in the right location
1970 void MetaCommentAction::Scale( double fXScale, double fYScale )
1971 {
1972  if (( fXScale == 1.0 ) && ( fYScale == 1.0 ))
1973  return;
1974 
1975  if ( !(mnDataSize && mpData) )
1976  return;
1977 
1978  bool bPathStroke = (maComment == "XPATHSTROKE_SEQ_BEGIN");
1979  if ( bPathStroke || maComment == "XPATHFILL_SEQ_BEGIN" )
1980  {
1981  SvMemoryStream aMemStm( static_cast<void*>(mpData.get()), mnDataSize, StreamMode::READ );
1982  SvMemoryStream aDest;
1983  if ( bPathStroke )
1984  {
1985  SvtGraphicStroke aStroke;
1986  ReadSvtGraphicStroke( aMemStm, aStroke );
1987  aStroke.scale( fXScale, fYScale );
1988  WriteSvtGraphicStroke( aDest, aStroke );
1989  }
1990  else
1991  {
1992  SvtGraphicFill aFill;
1993  ReadSvtGraphicFill( aMemStm, aFill );
1994  tools::PolyPolygon aPath;
1995  aFill.getPath( aPath );
1996  aPath.Scale( fXScale, fYScale );
1997  aFill.setPath( aPath );
1998  WriteSvtGraphicFill( aDest, aFill );
1999  }
2000  mpData.reset();
2001  ImplInitDynamicData( static_cast<const sal_uInt8*>( aDest.GetData() ), aDest.Tell() );
2002  } else if( maComment == "EMF_PLUS_HEADER_INFO" ){
2003  SvMemoryStream aMemStm( static_cast<void*>(mpData.get()), mnDataSize, StreamMode::READ );
2004  SvMemoryStream aDest;
2005 
2006  sal_Int32 nLeft(0), nRight(0), nTop(0), nBottom(0);
2007  sal_Int32 nPixX(0), nPixY(0), nMillX(0), nMillY(0);
2008  float m11(0), m12(0), m21(0), m22(0), mdx(0), mdy(0);
2009 
2010  // read data
2011  aMemStm.ReadInt32( nLeft ).ReadInt32( nTop ).ReadInt32( nRight ).ReadInt32( nBottom );
2012  aMemStm.ReadInt32( nPixX ).ReadInt32( nPixY ).ReadInt32( nMillX ).ReadInt32( nMillY );
2013  aMemStm.ReadFloat( m11 ).ReadFloat( m12 ).ReadFloat( m21 ).ReadFloat( m22 ).ReadFloat( mdx ).ReadFloat( mdy );
2014 
2015  // add scale to the transformation
2016  m11 *= fXScale;
2017  m12 *= fXScale;
2018  m22 *= fYScale;
2019  m21 *= fYScale;
2020 
2021  // prepare new data
2022  aDest.WriteInt32( nLeft ).WriteInt32( nTop ).WriteInt32( nRight ).WriteInt32( nBottom );
2023  aDest.WriteInt32( nPixX ).WriteInt32( nPixY ).WriteInt32( nMillX ).WriteInt32( nMillY );
2024  aDest.WriteFloat( m11 ).WriteFloat( m12 ).WriteFloat( m21 ).WriteFloat( m22 ).WriteFloat( mdx ).WriteFloat( mdy );
2025 
2026  // save them
2027  ImplInitDynamicData( static_cast<const sal_uInt8*>( aDest.GetData() ), aDest.Tell() );
2028  }
2029 }
2030 
2033  mnLayoutMode( vcl::text::ComplexTextLayoutFlags::Default )
2034 {}
2035 
2037 {}
2038 
2041  mnLayoutMode( nLayoutMode )
2042 {}
2043 
2045 {
2046  pOut->SetLayoutMode( mnLayoutMode );
2047 }
2048 
2050 {
2051  return new MetaLayoutModeAction( *this );
2052 }
2053 
2056  meTextLanguage( LANGUAGE_DONTKNOW )
2057 {}
2058 
2060 {}
2061 
2064  meTextLanguage( eTextLanguage )
2065 {}
2066 
2068 {
2070 }
2071 
2073 {
2074  return new MetaTextLanguageAction( *this );
2075 }
2076 
2077 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
sal_uInt16 Count() const
virtual ~MetaRectAction() override
Definition: metaact.cxx:230
vcl::text::ComplexTextLayoutFlags mnLayoutMode
Definition: metaact.hxx:1706
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1824
virtual void Execute(OutputDevice *pOut)
Definition: metaact.cxx:97
void SetDigitLanguage(LanguageType)
Definition: text.cxx:69
GfxLink maGfxLink
Definition: metaact.hxx:1606
virtual ~MetaStretchTextAction() override
Definition: metaact.cxx:677
Definition: hatch.hxx:46
GDIMetaFile maSubst
Definition: metaact.hxx:1607
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:132
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1530
void SetFontSize(const Size &)
Definition: font/font.cxx:145
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:354
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1597
void setStartArrow(const tools::PolyPolygon &)
Set the polygon that is put at the start of the line.
virtual ~MetaGradientAction() override
Definition: metaact.cxx:1138
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1321
const OUString & GetFamilyName() const
Definition: font/font.cxx:850
virtual ~MetaISectRegionClipRegionAction() override
Definition: metaact.cxx:1345
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1743
Bitmap maBmp
Definition: metaact.hxx:877
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:464
virtual ~MetaPushAction() override
Definition: metaact.cxx:1660
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:547
virtual ~MetaEllipseAction() override
Definition: metaact.cxx:301
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1770
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1690
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1607
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1575
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:280
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1162
SvStream & WriteInt32(sal_Int32 nInt32)
virtual ~MetaMaskAction() override
Definition: metaact.cxx:1019
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1369
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1814
void Move(tools::Long nHorzMove, tools::Long nVertMove)
Definition: region.cxx:399
virtual ~MetaPieAction() override
Definition: metaact.cxx:372
virtual ~MetaTextAction() override
Definition: metaact.cxx:559
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1180
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1331
Point maEndPt
Definition: metaact.hxx:319
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1198
virtual ~MetaCommentAction() override
Definition: metaact.cxx:1882
void DrawBitmapEx(const Point &rDestPt, const BitmapEx &rBitmapEx)
Definition: bitmapex.cxx:33
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:966
SvStream & WriteSvtGraphicStroke(SvStream &rOStm, const SvtGraphicStroke &rClass)
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1637
Point maStartPt
Definition: metaact.hxx:318
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:586
sal_uIntPtr sal_uLong
OUString maStr
Definition: metaact.hxx:471
long Long
virtual ~MetaPolyLineAction() override
Definition: metaact.cxx:450
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1354
virtual ~MetaBmpExAction() override
Definition: metaact.cxx:907
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1738
void Push(vcl::PushFlags nFlags=vcl::PushFlags::ALL)
Definition: stack.cxx:33
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1152
void DrawPolygon(const tools::Polygon &rPoly)
Render the given polygon.
Definition: polygon.cxx:156
sal_Int32 mnIndex
Definition: metaact.hxx:472
Encapsulates geometry and associated attributes of a graphical 'pen stroke'.
void DrawChord(const tools::Rectangle &rRect, const Point &rStartPt, const Point &rEndPt)
void Scale(double fScaleX, double fScaleY)
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1809
void DrawPolyLine(const tools::Polygon &rPoly)
Render the given polygon as a line stroke.
Definition: polyline.cxx:33
DrawTextFlags mnStyle
Definition: metaact.hxx:591
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:571
void SetTextFillColor()
Definition: text.cxx:732
virtual ~MetaEPSAction() override
Definition: metaact.cxx:1797
void Move(tools::Long nHorzMove, tools::Long nVertMove)
virtual ~MetaGradientExAction() override
Definition: metaact.cxx:1177
tools::PolyPolygon maPolyPoly
Definition: metaact.hxx:443
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:213
void IntersectClipRegion(const tools::Rectangle &rRect)
GDIMetaFile * GetConnectMetaFile() const
Definition: outdev.hxx:292
void DrawTextLine(const Point &rPos, tools::Long nWidth, FontStrikeout eStrikeout, FontLineStyle eUnderline, FontLineStyle eOverline, bool bUnderlineAbove=false)
Definition: textline.cxx:931
basegfx::BColor maColor
void SetCharSet(rtl_TextEncoding)
Definition: font/font.cxx:157
tools::Polygon maPoly
Definition: metaact.hxx:416
virtual ~MetaMaskScaleAction() override
Definition: metaact.cxx:1055
SvStream & ReadSvtGraphicStroke(SvStream &rIStm, SvtGraphicStroke &rClass)
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1642
Point maEndPt
Definition: metaact.hxx:285
void DrawMask(const Point &rDestPt, const Bitmap &rBitmap, const Color &rMaskColor)
Definition: mask.cxx:30
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:174
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1083
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:770
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:921
virtual ~MetaPointAction() override
Definition: metaact.cxx:151
void SetMapMode()
Definition: map.cxx:594
DrawTextFlags
SvStream & ReadSvtGraphicFill(SvStream &rIStm, SvtGraphicFill &rClass)
virtual ~MetaTextLanguageAction() override
Definition: metaact.cxx:2059
virtual ~MetaISectRectClipRegionAction() override
Definition: metaact.cxx:1313
sal_uInt32 mnHorzRound
Definition: metaact.hxx:223
virtual ~MetaMaskScalePartAction() override
Definition: metaact.cxx:1095
NONE
void scale(double fScaleX, double fScaleY)
Affine scaling in both X and Y dimensions.
virtual ~MetaBmpScaleAction() override
Definition: metaact.cxx:828
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1041
void DrawWallpaper(const tools::Rectangle &rRect, const Wallpaper &rWallpaper)
Definition: wallpaper.cxx:35
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:819
LineInfo maLineInfo
Definition: metaact.hxx:385
constexpr tools::Long Width() const
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1909
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:427
FuncFlags mnFlags
virtual ~MetaRefPointAction() override
Definition: metaact.cxx:1837
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1304
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1709
virtual ~MetaHatchAction() override
Definition: metaact.cxx:1208
void DrawStretchText(const Point &rStartPt, sal_uLong nWidth, const OUString &rStr, sal_Int32 nIndex=0, sal_Int32 nLen=-1)
Definition: text.cxx:1124
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1476
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:472
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:542
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:532
LINESTYLE_NONE
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:142
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:500
enumrange< T >::Iterator begin(enumrange< T >)
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:439
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:775
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:482
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:814
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:275
MetaAction()
Definition: metaact.cxx:78
virtual ~MetaFloatTransparentAction() override
Definition: metaact.cxx:1758
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1394
int nCount
void SetLayoutMode(vcl::text::ComplexTextLayoutFlags nTextLayoutMode)
Definition: text.cxx:58
SAL_DLLPRIVATE void ImplInitDynamicData(const sal_uInt8 *pData, sal_uInt32 nDataSize)
Definition: metaact.cxx:1886
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:432
virtual ~MetaClipRegionAction() override
Definition: metaact.cxx:1277
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:849
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1188
virtual ~MetaChordAction() override
Definition: metaact.cxx:411
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1780
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1078
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:477
void Pop()
Definition: stack.cxx:92
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1046
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:200
MetaActionType
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1846
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:219
tools::PolyPolygon maPolyPoly
Definition: metaact.hxx:1536
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1222
void DrawLine(const Point &rStartPt, const Point &rEndPt)
Definition: line.cxx:160
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1685
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:393
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:956
void SetTextLineColor()
Definition: textline.cxx:881
tools::Rectangle maRect
Definition: metaact.hxx:589
void DrawRect(const tools::Rectangle &rRect)
Definition: rect.cxx:51
virtual ~MetaLineColorAction() override
Definition: metaact.cxx:1410
void DrawTextArray(const Point &rStartPt, const OUString &rStr, o3tl::span< const sal_Int32 > pDXAry, sal_Int32 nIndex=0, sal_Int32 nLen=-1, SalLayoutFlags flags=SalLayoutFlags::NONE, const SalLayoutGlyphs *pLayoutCache=nullptr)
Definition: text.cxx:926
void setPath(const tools::PolyPolygon &rPath)
Set path to fill.
Gradient maGradient
Definition: metaact.hxx:994
exports com.sun.star. text
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:164
virtual ~MetaRoundRectAction() override
Definition: metaact.cxx:264
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:732
FontStrikeout meStrikeout
Definition: metaact.hxx:625
sal_uInt32 mnDataSize
Definition: metaact.hxx:1672
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:916
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1522
void SetLineColor()
Definition: line.cxx:36
void SetRefPoint()
Definition: outdev.cxx:288
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1286
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:691
FontLineStyle meOverline
Definition: metaact.hxx:627
Bitmap maBmp
Definition: metaact.hxx:664
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:169
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:780
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1121
std::unique_ptr< sal_uInt8[]> mpData
Definition: metaact.hxx:1674
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1326
int i
sal_Int32 mnLen
Definition: metaact.hxx:473
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:344
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1036
ComplexTextLayoutFlags
Definition: State.hxx:75
virtual void Scale(double fScaleX, double fScaleY)
Definition: metaact.cxx:110
Point maStartPt
Definition: metaact.hxx:161
virtual ~MetaTextColorAction() override
Definition: metaact.cxx:1463
sal_Int32 mnType
tools::Long FRound(double fVal)
virtual ~MetaTextAlignAction() override
Definition: metaact.cxx:1567
Point maStartPt
Definition: metaact.hxx:284
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1775
virtual ~MetaOverlineColorAction() override
Definition: metaact.cxx:1540
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1854
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:961
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1914
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1673
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1116
virtual ~MetaFontAction() override
Definition: metaact.cxx:1619
virtual ~MetaArcAction() override
Definition: metaact.cxx:333
SvStream & ReadFloat(float &rFloat)
void DrawTransparent(const tools::PolyPolygon &rPolyPoly, sal_uInt16 nTransparencePercent)
void DrawArc(const tools::Rectangle &rRect, const Point &rStartPt, const Point &rEndPt)
void SetOrigin(const Point &rOrigin)
Definition: mapmod.cxx:104
virtual ~MetaPopAction() override
Definition: metaact.cxx:1682
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:319
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1733
void SetFillColor()
Definition: fill.cxx:29
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
Definition: outdev.hxx:175
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:581
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1294
void SetTextColor(const Color &rColor)
Definition: text.cxx:714
void Move(tools::Long nHorzMove, tools::Long nVertMove)
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:243
#define LANGUAGE_DONTKNOW
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1647
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:349
const Size & GetFontSize() const
Definition: font/font.cxx:853
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:2044
void getPath(tools::Polygon &) const
Query path to stroke.
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1970
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:537
sal_uInt16 GetSize() const
void SetOverlineColor()
Definition: textline.cxx:906
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:737
virtual ~MetaFillColorAction() override
Definition: metaact.cxx:1437
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:324
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1557
virtual ~MetaMapModeAction() override
Definition: metaact.cxx:1589
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1031
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:742
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1446
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1549
void MoveClipRegion(tools::Long nHorzMove, tools::Long nVertMove)
vcl::Region maRegion
Definition: metaact.hxx:1113
PushFlags
Definition: State.hxx:39
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:238
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:931
void DrawPie(const tools::Rectangle &rRect, const Point &rStartPt, const Point &rEndPt)
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1217
RasterOp
Definition: RasterOp.hxx:22
void DrawBitmap(const Point &rDestPt, const Bitmap &rBitmap)
virtual ~MetaBmpAction() override
Definition: metaact.cxx:795
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1068
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:505
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove)
Definition: metaact.cxx:106
void getStartArrow(tools::PolyPolygon &) const
Get the polygon that is put at the start of the line.
void DrawPixel(const Point &rPt)
Definition: pixel.cxx:56
void DrawHatch(const tools::PolyPolygon &rPolyPoly, const Hatch &rHatch)
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1580
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:383
enumrange< T >::Iterator end(enumrange< T >)
vcl::PushFlags mnFlags
Definition: metaact.hxx:1472
tools::Rectangle maRect
Definition: metaact.hxx:317
TextAlign
virtual ~MetaPolygonAction() override
Definition: metaact.cxx:492
virtual ~MetaRasterOpAction() override
Definition: metaact.cxx:1700
constexpr Point TopLeft() const
SvStream & ReadInt32(sal_Int32 &rInt32)
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1111
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1299
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:727
SvStream & WriteSvtGraphicFill(SvStream &rOStm, const SvtGraphicFill &rClass)
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1454
tools::Rectangle maRect
Definition: metaact.hxx:195
virtual ~MetaBmpExScaleAction() override
Definition: metaact.cxx:940
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:515
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:2067
tools::Rectangle maRect
Definition: metaact.hxx:351
ALIGN_TOP
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:2072
constexpr Size GetSize() const
void setEndArrow(const tools::PolyPolygon &)
Set the polygon that is put at the end of the line.
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1901
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1157
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1503
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:854
tools::PolyPolygon maPolyPoly
Definition: metaact.hxx:1023
B2DPoint maPoint
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:951
tools::Rectangle maRect
Definition: metaact.hxx:256
BitmapEx maBmpEx
Definition: metaact.hxx:769
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:701
virtual ~MetaPolyPolygonAction() override
Definition: metaact.cxx:524
constexpr tools::Long Height() const
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:309
unsigned char sal_uInt8
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1364
OUString maComment
vcl::Font maFont
Definition: metaact.hxx:1440
void SetFont(const vcl::Font &rNewFont)
Definition: outdev/font.cxx:53
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1227
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:576
void AddAction(const rtl::Reference< MetaAction > &pAction)
Definition: gdimtf.cxx:562
LineInfo maLineInfo
Definition: metaact.hxx:160
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1232
SvStream & WriteFloat(float nFloat)
virtual ~MetaTextFillColorAction() override
Definition: metaact.cxx:1486
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1193
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:926
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1073
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:314
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1495
tools::PolyPolygon maPolyPoly
Definition: metaact.hxx:1053
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:400
void SetRasterOp(RasterOp eRasterOp)
Definition: outdev.cxx:313
double mnWidth
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:422
bool DrawEPS(const Point &rPt, const Size &rSz, const GfxLink &rGfxLink, GDIMetaFile *pSubst=nullptr)
Definition: outdev/eps.cxx:27
LINE
virtual ~MetaMoveClipRegionAction() override
Definition: metaact.cxx:1380
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:159
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:388
void DrawPolyPolygon(const tools::PolyPolygon &rPolyPoly)
Render the given poly-polygon.
Definition: polygon.cxx:36
sal_uInt32 mnVertRound
Definition: metaact.hxx:224
sal_uInt64 Tell() const
tools::Rectangle maRect
Definition: metaact.hxx:993
virtual ~MetaLineAction() override
Definition: metaact.cxx:183
LanguageType meTextLanguage
Definition: metaact.hxx:1730
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1602
const Point & GetOrigin() const
Definition: mapmod.cxx:140
void Scale(double fScaleX, double fScaleY)
Definition: region.cxx:452
virtual ~MetaTextLineAction() override
Definition: metaact.cxx:755
void setPath(const tools::Polygon &)
Set path to stroke.
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:248
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:804
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:839
virtual rtl::Reference< MetaAction > Clone() const
Definition: metaact.cxx:101
void DrawEllipse(const tools::Rectangle &rRect)
constexpr Point BottomRight() const
sal_uInt16 mnTransPercent
Definition: metaact.hxx:1537
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1399
sal_uInt32 mnWidth
Definition: metaact.hxx:550
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:290
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1819
void Move(tools::Long nHorzMoveDelta, tools::Long nVertMoveDelta)
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:361
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:253
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:2049
RasterOp meRasterOp
Definition: metaact.hxx:1512
COMMENT
tools::Rectangle maRect
Definition: metaact.hxx:222
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:809
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:137
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:285
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1471
Encapsulates geometry and associated attributes of a filled area.
virtual ~MetaPixelAction() override
Definition: metaact.cxx:118
virtual ~MetaTransparentAction() override
Definition: metaact.cxx:1724
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1147
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1427
void getEndArrow(tools::PolyPolygon &) const
Get the polygon that is put at the end of the line.
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1419
STRIKEOUT_NONE
void getPath(tools::PolyPolygon &) const
Query path to fill.
virtual ~MetaTextRectAction() override
Definition: metaact.cxx:716
bool IsStarSymbol(const OUString &rFontName)
int mnIndex
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1748
virtual ~MetaLayoutModeAction() override
Definition: metaact.cxx:2036
FontLineStyle
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1359
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:696
void DrawGradient(const tools::Rectangle &rRect, const Gradient &rGradient)
virtual ~MetaTextLineColorAction() override
Definition: metaact.cxx:1513
void DrawText(const Point &rStartPt, const OUString &rStr, sal_Int32 nIndex=0, sal_Int32 nLen=-1, std::vector< tools::Rectangle > *pVector=nullptr, OUString *pDisplayText=nullptr, const SalLayoutGlyphs *pLayoutCache=nullptr)
Definition: text.cxx:800
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:844
virtual ~MetaAction() override
Definition: metaact.cxx:93
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1668
tools::Rectangle maRect
Definition: metaact.hxx:283
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1126
FontLineStyle meUnderline
Definition: metaact.hxx:626
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:706
FontStrikeout
TEXT
tools::Polygon maPoly
Definition: metaact.hxx:386
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1785
void SetTextAlign(TextAlign eAlign)
Definition: text.cxx:772
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:785
rtl_TextEncoding GetCharSet() const
Definition: font/font.cxx:859
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1389
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1336
::basegfx::B2IVector maSize
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:510
const void * GetData()
const double mnValue
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1714
tools::Long mnWidth
Definition: metaact.hxx:624
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:127
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:208