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 <utility>
28#include <vcl/dibtools.hxx>
31#include <vcl/outdev.hxx>
32#include <vcl/metaact.hxx>
33#include <vcl/graphictools.hxx>
35#include <unotools/fontdefs.hxx>
37
38namespace
39{
40
41void ImplScalePoint( Point& rPt, double fScaleX, double fScaleY )
42{
43 rPt.setX( FRound( fScaleX * rPt.X() ) );
44 rPt.setY( FRound( fScaleY * rPt.Y() ) );
45}
46
47void ImplScaleRect( tools::Rectangle& rRect, double fScaleX, double fScaleY )
48{
49 Point aTL( rRect.TopLeft() );
50 Point aBR( rRect.BottomRight() );
51
52 ImplScalePoint( aTL, fScaleX, fScaleY );
53 ImplScalePoint( aBR, fScaleX, fScaleY );
54
55 rRect = tools::Rectangle( aTL, aBR );
56 rRect.Normalize();
57}
58
59void ImplScalePoly( tools::Polygon& rPoly, double fScaleX, double fScaleY )
60{
61 for( sal_uInt16 i = 0, nCount = rPoly.GetSize(); i < nCount; i++ )
62 ImplScalePoint( rPoly[ i ], fScaleX, fScaleY );
63}
64
65void ImplScaleLineInfo( LineInfo& rLineInfo, double fScaleX, double fScaleY )
66{
67 if( !rLineInfo.IsDefault() )
68 {
69 const double fScale = ( fabs(fScaleX) + fabs(fScaleY) ) * 0.5;
70
71 rLineInfo.SetWidth( FRound( fScale * rLineInfo.GetWidth() ) );
72 rLineInfo.SetDashLen( FRound( fScale * rLineInfo.GetDashLen() ) );
73 rLineInfo.SetDotLen( FRound( fScale * rLineInfo.GetDotLen() ) );
74 rLineInfo.SetDistance( FRound( fScale * rLineInfo.GetDistance() ) );
75 }
76}
77
78} //anonymous namespace
79
82{
83}
84
86 mnType( nType )
87{
88}
89
91 SimpleReferenceObject(), mnType( rOther.mnType )
92{
93}
94
96{
97}
98
100{
101}
102
104{
105 return new MetaAction;
106}
107
109{
110}
111
112void MetaAction::Scale( double, double )
113{
114}
115
118{}
119
121{}
122
123MetaPixelAction::MetaPixelAction( const Point& rPt, const Color& rColor ) :
125 maPt ( rPt ),
126 maColor ( rColor )
127{}
128
130{
131 pOut->DrawPixel( maPt, maColor );
132}
133
135{
136 return new MetaPixelAction( *this );
137}
138
140{
141 maPt.Move( nHorzMove, nVertMove );
142}
143
144void MetaPixelAction::Scale( double fScaleX, double fScaleY )
145{
146 ImplScalePoint( maPt, fScaleX, fScaleY );
147}
148
151{}
152
154{}
155
158 maPt ( rPt )
159{}
160
162{
163 pOut->DrawPixel( maPt );
164}
165
167{
168 return new MetaPointAction( *this );
169}
170
172{
173 maPt.Move( nHorzMove, nVertMove );
174}
175
176void MetaPointAction::Scale( double fScaleX, double fScaleY )
177{
178 ImplScalePoint( maPt, fScaleX, fScaleY );
179}
180
183{}
184
186{}
187
188MetaLineAction::MetaLineAction( const Point& rStart, const Point& rEnd ) :
190 maStartPt ( rStart ),
191 maEndPt ( rEnd )
192{}
193
194MetaLineAction::MetaLineAction( const Point& rStart, const Point& rEnd,
195 LineInfo aLineInfo ) :
197 maLineInfo (std::move( aLineInfo )),
198 maStartPt ( rStart ),
199 maEndPt ( rEnd )
200{}
201
203{
204 if( maLineInfo.IsDefault() )
205 pOut->DrawLine( maStartPt, maEndPt );
206 else
207 pOut->DrawLine( maStartPt, maEndPt, maLineInfo );
208}
209
211{
212 return new MetaLineAction( *this );
213}
214
215void MetaLineAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
216{
217 maStartPt.Move( nHorzMove, nVertMove );
218 maEndPt.Move( nHorzMove, nVertMove );
219}
220
221void MetaLineAction::Scale( double fScaleX, double fScaleY )
222{
223 ImplScalePoint( maStartPt, fScaleX, fScaleY );
224 ImplScalePoint( maEndPt, fScaleX, fScaleY );
225 ImplScaleLineInfo( maLineInfo, fScaleX, fScaleY );
226}
227
230{}
231
233{}
234
237 maRect ( rRect )
238{}
239
241{
242 pOut->DrawRect( maRect );
243}
244
246{
247 return new MetaRectAction( *this );
248}
249
250void MetaRectAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
251{
252 maRect.Move( nHorzMove, nVertMove );
253}
254
255void MetaRectAction::Scale( double fScaleX, double fScaleY )
256{
257 ImplScaleRect( maRect, fScaleX, fScaleY );
258}
259
262 mnHorzRound ( 0 ),
263 mnVertRound ( 0 )
264{}
265
267{}
268
270 sal_uInt32 nHorzRound, sal_uInt32 nVertRound ) :
272 maRect ( rRect ),
273 mnHorzRound ( nHorzRound ),
274 mnVertRound ( nVertRound )
275{}
276
278{
279 pOut->DrawRect( maRect, mnHorzRound, mnVertRound );
280}
281
283{
284 return new MetaRoundRectAction( *this );
285}
286
288{
289 maRect.Move( nHorzMove, nVertMove );
290}
291
292void MetaRoundRectAction::Scale( double fScaleX, double fScaleY )
293{
294 ImplScaleRect( maRect, fScaleX, fScaleY );
295 mnHorzRound = FRound( mnHorzRound * fabs(fScaleX) );
296 mnVertRound = FRound( mnVertRound * fabs(fScaleY) );
297}
298
301{}
302
304{}
305
308 maRect ( rRect )
309{}
310
312{
313 pOut->DrawEllipse( maRect );
314}
315
317{
318 return new MetaEllipseAction( *this );
319}
320
322{
323 maRect.Move( nHorzMove, nVertMove );
324}
325
326void MetaEllipseAction::Scale( double fScaleX, double fScaleY )
327{
328 ImplScaleRect( maRect, fScaleX, fScaleY );
329}
330
333{}
334
336{}
337
339 const Point& rStart, const Point& rEnd ) :
341 maRect ( rRect ),
342 maStartPt ( rStart ),
343 maEndPt ( rEnd )
344{}
345
347{
348 pOut->DrawArc( maRect, maStartPt, maEndPt );
349}
350
352{
353 return new MetaArcAction( *this );
354}
355
356void MetaArcAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
357{
358 maRect.Move( nHorzMove, nVertMove );
359 maStartPt.Move( nHorzMove, nVertMove );
360 maEndPt.Move( nHorzMove, nVertMove );
361}
362
363void MetaArcAction::Scale( double fScaleX, double fScaleY )
364{
365 ImplScaleRect( maRect, fScaleX, fScaleY );
366 ImplScalePoint( maStartPt, fScaleX, fScaleY );
367 ImplScalePoint( maEndPt, fScaleX, fScaleY );
368}
369
372{}
373
375{}
376
378 const Point& rStart, const Point& rEnd ) :
380 maRect ( rRect ),
381 maStartPt ( rStart ),
382 maEndPt ( rEnd )
383{}
384
386{
387 pOut->DrawPie( maRect, maStartPt, maEndPt );
388}
389
391{
392 return new MetaPieAction( *this );
393}
394
395void MetaPieAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
396{
397 maRect.Move( nHorzMove, nVertMove );
398 maStartPt.Move( nHorzMove, nVertMove );
399 maEndPt.Move( nHorzMove, nVertMove );
400}
401
402void MetaPieAction::Scale( double fScaleX, double fScaleY )
403{
404 ImplScaleRect( maRect, fScaleX, fScaleY );
405 ImplScalePoint( maStartPt, fScaleX, fScaleY );
406 ImplScalePoint( maEndPt, fScaleX, fScaleY );
407}
408
411{}
412
414{}
415
417 const Point& rStart, const Point& rEnd ) :
419 maRect ( rRect ),
420 maStartPt ( rStart ),
421 maEndPt ( rEnd )
422{}
423
425{
426 pOut->DrawChord( maRect, maStartPt, maEndPt );
427}
428
430{
431 return new MetaChordAction( *this );
432}
433
435{
436 maRect.Move( nHorzMove, nVertMove );
437 maStartPt.Move( nHorzMove, nVertMove );
438 maEndPt.Move( nHorzMove, nVertMove );
439}
440
441void MetaChordAction::Scale( double fScaleX, double fScaleY )
442{
443 ImplScaleRect( maRect, fScaleX, fScaleY );
444 ImplScalePoint( maStartPt, fScaleX, fScaleY );
445 ImplScalePoint( maEndPt, fScaleX, fScaleY );
446}
447
450{}
451
453{}
454
457 maPoly (std::move( aPoly ))
458{}
459
462 maLineInfo (std::move( aLineInfo )),
463 maPoly (std::move( aPoly ))
464{}
465
466static bool AllowDim(tools::Long nDim)
467{
468 static bool bFuzzing = utl::ConfigManager::IsFuzzing();
469 if (bFuzzing)
470 {
471 if (nDim > 0x20000000 || nDim < -0x20000000)
472 {
473 SAL_WARN("vcl", "skipping huge dimension: " << nDim);
474 return false;
475 }
476 }
477 return true;
478}
479
480static bool AllowPoint(const Point& rPoint)
481{
482 return AllowDim(rPoint.X()) && AllowDim(rPoint.Y());
483}
484
485static bool AllowRect(const tools::Rectangle& rRect)
486{
487 return AllowPoint(rRect.TopLeft()) && AllowPoint(rRect.BottomRight());
488}
489
491{
492 if (!AllowRect(pOut->LogicToPixel(maPoly.GetBoundRect())))
493 return;
494
495 if( maLineInfo.IsDefault() )
496 pOut->DrawPolyLine( maPoly );
497 else
498 pOut->DrawPolyLine( maPoly, maLineInfo );
499}
500
502{
503 return new MetaPolyLineAction( *this );
504}
505
507{
508 maPoly.Move( nHorzMove, nVertMove );
509}
510
511void MetaPolyLineAction::Scale( double fScaleX, double fScaleY )
512{
513 ImplScalePoly( maPoly, fScaleX, fScaleY );
514 ImplScaleLineInfo( maLineInfo, fScaleX, fScaleY );
515}
516
519{}
520
522{}
523
526 maPoly (std::move( aPoly ))
527{}
528
530{
531 pOut->DrawPolygon( maPoly );
532}
533
535{
536 return new MetaPolygonAction( *this );
537}
538
540{
541 maPoly.Move( nHorzMove, nVertMove );
542}
543
544void MetaPolygonAction::Scale( double fScaleX, double fScaleY )
545{
546 ImplScalePoly( maPoly, fScaleX, fScaleY );
547}
548
551{}
552
554{}
555
558 maPolyPoly (std::move( aPolyPoly ))
559{}
560
562{
563 pOut->DrawPolyPolygon( maPolyPoly );
564}
565
567{
568 return new MetaPolyPolygonAction( *this );
569}
570
572{
573 maPolyPoly.Move( nHorzMove, nVertMove );
574}
575
576void MetaPolyPolygonAction::Scale( double fScaleX, double fScaleY )
577{
578 for( sal_uInt16 i = 0, nCount = maPolyPoly.Count(); i < nCount; i++ )
579 ImplScalePoly( maPolyPoly[ i ], fScaleX, fScaleY );
580}
581
584 mnIndex ( 0 ),
585 mnLen ( 0 )
586{}
587
589{}
590
591MetaTextAction::MetaTextAction( const Point& rPt, OUString aStr,
592 sal_Int32 nIndex, sal_Int32 nLen ) :
594 maPt ( rPt ),
595 maStr (std::move( aStr )),
596 mnIndex ( nIndex ),
597 mnLen ( nLen )
598{}
599
601{
602 if (!AllowDim(pOut->LogicToPixel(maPt).Y()))
603 return;
604
605 pOut->DrawText( maPt, maStr, mnIndex, mnLen );
606}
607
609{
610 return new MetaTextAction( *this );
611}
612
613void MetaTextAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
614{
615 maPt.Move( nHorzMove, nVertMove );
616}
617
618void MetaTextAction::Scale( double fScaleX, double fScaleY )
619{
620 ImplScalePoint( maPt, fScaleX, fScaleY );
621}
622
625 mnIndex ( 0 ),
626 mnLen ( 0 )
627{}
628
631 maStartPt ( rAction.maStartPt ),
632 maStr ( rAction.maStr ),
633 maDXAry ( rAction.maDXAry ),
634 maKashidaAry( rAction.maKashidaAry ),
635 mnIndex ( rAction.mnIndex ),
636 mnLen ( rAction.mnLen )
637{
638}
639
641 OUString aStr,
642 KernArray aDXAry,
643 std::vector<sal_Bool> aKashidaAry,
644 sal_Int32 nIndex,
645 sal_Int32 nLen ) :
647 maStartPt ( rStartPt ),
648 maStr (std::move( aStr )),
649 maDXAry (std::move( aDXAry )),
650 maKashidaAry(std::move( aKashidaAry )),
651 mnIndex ( nIndex ),
652 mnLen ( nLen )
653{
654}
655
657 OUString aStr,
658 KernArraySpan pDXAry,
659 o3tl::span<const sal_Bool> pKashidaAry,
660 sal_Int32 nIndex,
661 sal_Int32 nLen ) :
663 maStartPt ( rStartPt ),
664 maStr (std::move( aStr )),
665 maKashidaAry( pKashidaAry.begin(), pKashidaAry.end() ),
666 mnIndex ( nIndex ),
667 mnLen ( nLen )
668{
669 maDXAry.assign(pDXAry);
670}
671
673{
674}
675
677{
678 pOut->DrawTextArray( maStartPt, maStr, maDXAry, maKashidaAry, mnIndex, mnLen );
679}
680
682{
683 return new MetaTextArrayAction( *this );
684}
685
687{
688 maStartPt.Move( nHorzMove, nVertMove );
689}
690
691void MetaTextArrayAction::Scale( double fScaleX, double fScaleY )
692{
693 ImplScalePoint( maStartPt, fScaleX, fScaleY );
694
695 if ( !maDXAry.empty() && mnLen )
696 {
697 for ( sal_uInt16 i = 0, nCount = mnLen; i < nCount; i++ )
698 maDXAry.set(i, FRound(maDXAry[i] * fabs(fScaleX)));
699 }
700}
701
703{
704 maDXAry = std::move(aArray);
705}
706
707void MetaTextArrayAction::SetKashidaArray(std::vector<sal_Bool> aArray)
708{
709 maKashidaAry = std::move(aArray);
710}
711
714 mnWidth ( 0 ),
715 mnIndex ( 0 ),
716 mnLen ( 0 )
717{}
718
720{}
721
723 OUString aStr,
724 sal_Int32 nIndex, sal_Int32 nLen ) :
726 maPt ( rPt ),
727 maStr (std::move( aStr )),
728 mnWidth ( nWidth ),
729 mnIndex ( nIndex ),
730 mnLen ( nLen )
731{}
732
734{
735 if (!AllowDim(pOut->LogicToPixel(maPt).Y()))
736 return;
737
738 pOut->DrawStretchText( maPt, mnWidth, maStr, mnIndex, mnLen );
739}
740
742{
743 return new MetaStretchTextAction( *this );
744}
745
747{
748 maPt.Move( nHorzMove, nVertMove );
749}
750
751void MetaStretchTextAction::Scale( double fScaleX, double fScaleY )
752{
753 ImplScalePoint( maPt, fScaleX, fScaleY );
754 mnWidth = static_cast<sal_uLong>(FRound( mnWidth * fabs(fScaleX) ));
755}
758 mnStyle ( DrawTextFlags::NONE )
759{}
760
762{}
763
765 OUString aStr, DrawTextFlags nStyle ) :
767 maRect ( rRect ),
768 maStr (std::move( aStr )),
769 mnStyle ( nStyle )
770{}
771
773{
774 if (!AllowRect(pOut->LogicToPixel(maRect)))
775 return;
776
777 pOut->DrawText( maRect, maStr, mnStyle );
778}
779
781{
782 return new MetaTextRectAction( *this );
783}
784
786{
787 maRect.Move( nHorzMove, nVertMove );
788}
789
790void MetaTextRectAction::Scale( double fScaleX, double fScaleY )
791{
792 ImplScaleRect( maRect, fScaleX, fScaleY );
793}
794
797 mnWidth ( 0 ),
798 meStrikeout ( STRIKEOUT_NONE ),
799 meUnderline ( LINESTYLE_NONE ),
800 meOverline ( LINESTYLE_NONE )
801{}
802
804{}
805
807 FontStrikeout eStrikeout,
808 FontLineStyle eUnderline,
809 FontLineStyle eOverline ) :
811 maPos ( rPos ),
812 mnWidth ( nWidth ),
813 meStrikeout ( eStrikeout ),
814 meUnderline ( eUnderline ),
815 meOverline ( eOverline )
816{}
817
819{
820 pOut->DrawTextLine( maPos, mnWidth, meStrikeout, meUnderline, meOverline );
821}
822
824{
825 return new MetaTextLineAction( *this );
826}
827
829{
830 maPos.Move( nHorzMove, nVertMove );
831}
832
833void MetaTextLineAction::Scale( double fScaleX, double fScaleY )
834{
835 ImplScalePoint( maPos, fScaleX, fScaleY );
836 mnWidth = FRound( mnWidth * fabs(fScaleX) );
837}
838
841{}
842
844{}
845
846MetaBmpAction::MetaBmpAction( const Point& rPt, const Bitmap& rBmp ) :
848 maBmp ( rBmp ),
849 maPt ( rPt )
850{}
851
853{
854 pOut->DrawBitmap( maPt, maBmp );
855}
856
858{
859 return new MetaBmpAction( *this );
860}
861
862void MetaBmpAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
863{
864 maPt.Move( nHorzMove, nVertMove );
865}
866
867void MetaBmpAction::Scale( double fScaleX, double fScaleY )
868{
869 ImplScalePoint( maPt, fScaleX, fScaleY );
870}
871
874{}
875
877{}
878
880 const Bitmap& rBmp ) :
882 maBmp ( rBmp ),
883 maPt ( rPt ),
884 maSz ( rSz )
885{}
886
887static bool AllowScale(const Size& rSource, const Size& rDest)
888{
889 static bool bFuzzing = utl::ConfigManager::IsFuzzing();
890 if (bFuzzing)
891 {
892 constexpr int nMaxScaleWhenFuzzing = 128;
893
894 auto nSourceHeight = rSource.Height();
895 auto nDestHeight = rDest.Height();
896 if (nSourceHeight && std::abs(nDestHeight / nSourceHeight) > nMaxScaleWhenFuzzing)
897 {
898 SAL_WARN("vcl", "skipping large vertical scaling: " << nSourceHeight << " to " << nDestHeight);
899 return false;
900 }
901
902 if (nDestHeight && std::abs(nSourceHeight / nDestHeight) > nMaxScaleWhenFuzzing)
903 {
904 SAL_WARN("vcl", "skipping large vertical scaling: " << nSourceHeight << " to " << nDestHeight);
905 return false;
906 }
907
908 auto nSourceWidth = rSource.Width();
909 auto nDestWidth = rDest.Width();
910 if (nSourceWidth && std::abs(nDestWidth / nSourceWidth) > nMaxScaleWhenFuzzing)
911 {
912 SAL_WARN("vcl", "skipping large horizontal scaling: " << nSourceWidth << " to " << nDestWidth);
913 return false;
914 }
915
916 if (nDestWidth && std::abs(nSourceWidth / nDestWidth) > nMaxScaleWhenFuzzing)
917 {
918 SAL_WARN("vcl", "skipping large horizontal scaling: " << nSourceWidth << " to " << nDestWidth);
919 return false;
920 }
921 }
922
923 return true;
924}
925
927{
928 Size aPixelSize(pOut->LogicToPixel(maSz));
929 if (!AllowRect(tools::Rectangle(pOut->LogicToPixel(maPt), aPixelSize)) ||
930 !AllowScale(maBmp.GetSizePixel(), aPixelSize))
931 {
932 return;
933 }
934
935 pOut->DrawBitmap( maPt, maSz, maBmp );
936}
937
939{
940 return new MetaBmpScaleAction( *this );
941}
942
944{
945 maPt.Move( nHorzMove, nVertMove );
946}
947
948void MetaBmpScaleAction::Scale( double fScaleX, double fScaleY )
949{
950 tools::Rectangle aRectangle(maPt, maSz);
951 ImplScaleRect( aRectangle, fScaleX, fScaleY );
952 maPt = aRectangle.TopLeft();
953 maSz = aRectangle.GetSize();
954}
955
958{}
959
961{}
962
964 const Point& rSrcPt, const Size& rSrcSz,
965 const Bitmap& rBmp ) :
967 maBmp ( rBmp ),
968 maDstPt ( rDstPt ),
969 maDstSz ( rDstSz ),
970 maSrcPt ( rSrcPt ),
971 maSrcSz ( rSrcSz )
972{}
973
975{
976 if (!AllowRect(pOut->LogicToPixel(tools::Rectangle(maDstPt, maDstSz))))
977 return;
978
979 pOut->DrawBitmap( maDstPt, maDstSz, maSrcPt, maSrcSz, maBmp );
980}
981
983{
984 return new MetaBmpScalePartAction( *this );
985}
986
988{
989 maDstPt.Move( nHorzMove, nVertMove );
990}
991
992void MetaBmpScalePartAction::Scale( double fScaleX, double fScaleY )
993{
994 tools::Rectangle aRectangle(maDstPt, maDstSz);
995 ImplScaleRect( aRectangle, fScaleX, fScaleY );
996 maDstPt = aRectangle.TopLeft();
997 maDstSz = aRectangle.GetSize();
998}
999
1002{}
1003
1005{}
1006
1009 maBmpEx ( rBmpEx ),
1010 maPt ( rPt )
1011{}
1012
1014{
1015 pOut->DrawBitmapEx( maPt, maBmpEx );
1016}
1017
1019{
1020 return new MetaBmpExAction( *this );
1021}
1022
1024{
1025 maPt.Move( nHorzMove, nVertMove );
1026}
1027
1028void MetaBmpExAction::Scale( double fScaleX, double fScaleY )
1029{
1030 ImplScalePoint( maPt, fScaleX, fScaleY );
1031}
1032
1035{}
1036
1038{}
1039
1041 const BitmapEx& rBmpEx ) :
1043 maBmpEx ( rBmpEx ),
1044 maPt ( rPt ),
1045 maSz ( rSz )
1046{}
1047
1049{
1050 if (!AllowScale(maBmpEx.GetSizePixel(), pOut->LogicToPixel(maSz)))
1051 return;
1052 if (!AllowRect(pOut->LogicToPixel(tools::Rectangle(maPt, maSz))))
1053 return;
1054
1055 pOut->DrawBitmapEx( maPt, maSz, maBmpEx );
1056}
1057
1059{
1060 return new MetaBmpExScaleAction( *this );
1061}
1062
1064{
1065 maPt.Move( nHorzMove, nVertMove );
1066}
1067
1068void MetaBmpExScaleAction::Scale( double fScaleX, double fScaleY )
1069{
1070 tools::Rectangle aRectangle(maPt, maSz);
1071 ImplScaleRect( aRectangle, fScaleX, fScaleY );
1072 maPt = aRectangle.TopLeft();
1073 maSz = aRectangle.GetSize();
1074}
1075
1078{}
1079
1081{}
1082
1084 const Point& rSrcPt, const Size& rSrcSz,
1085 const BitmapEx& rBmpEx ) :
1087 maBmpEx ( rBmpEx ),
1088 maDstPt ( rDstPt ),
1089 maDstSz ( rDstSz ),
1090 maSrcPt ( rSrcPt ),
1091 maSrcSz ( rSrcSz )
1092{}
1093
1095{
1096 pOut->DrawBitmapEx( maDstPt, maDstSz, maSrcPt, maSrcSz, maBmpEx );
1097}
1098
1100{
1101 return new MetaBmpExScalePartAction( *this );
1102}
1103
1105{
1106 maDstPt.Move( nHorzMove, nVertMove );
1107}
1108
1109void MetaBmpExScalePartAction::Scale( double fScaleX, double fScaleY )
1110{
1111 tools::Rectangle aRectangle(maDstPt, maDstSz);
1112 ImplScaleRect( aRectangle, fScaleX, fScaleY );
1113 maDstPt = aRectangle.TopLeft();
1114 maDstSz = aRectangle.GetSize();
1115}
1116
1119{}
1120
1122{}
1123
1125 const Bitmap& rBmp,
1126 const Color& rColor ) :
1128 maBmp ( rBmp ),
1129 maColor ( rColor ),
1130 maPt ( rPt )
1131{}
1132
1134{
1135 pOut->DrawMask( maPt, maBmp, maColor );
1136}
1137
1139{
1140 return new MetaMaskAction( *this );
1141}
1142
1144{
1145 maPt.Move( nHorzMove, nVertMove );
1146}
1147
1148void MetaMaskAction::Scale( double fScaleX, double fScaleY )
1149{
1150 ImplScalePoint( maPt, fScaleX, fScaleY );
1151}
1152
1155{}
1156
1158{}
1159
1161 const Bitmap& rBmp,
1162 const Color& rColor ) :
1164 maBmp ( rBmp ),
1165 maColor ( rColor ),
1166 maPt ( rPt ),
1167 maSz ( rSz )
1168{}
1169
1171{
1172 if (!AllowRect(pOut->LogicToPixel(tools::Rectangle(maPt, maSz))))
1173 return;
1174 pOut->DrawMask( maPt, maSz, maBmp, maColor );
1175}
1176
1178{
1179 return new MetaMaskScaleAction( *this );
1180}
1181
1183{
1184 maPt.Move( nHorzMove, nVertMove );
1185}
1186
1187void MetaMaskScaleAction::Scale( double fScaleX, double fScaleY )
1188{
1189 tools::Rectangle aRectangle(maPt, maSz);
1190 ImplScaleRect( aRectangle, fScaleX, fScaleY );
1191 maPt = aRectangle.TopLeft();
1192 maSz = aRectangle.GetSize();
1193}
1194
1197{}
1198
1200{}
1201
1203 const Point& rSrcPt, const Size& rSrcSz,
1204 const Bitmap& rBmp,
1205 const Color& rColor ) :
1207 maBmp ( rBmp ),
1208 maColor ( rColor ),
1209 maDstPt ( rDstPt ),
1210 maDstSz ( rDstSz ),
1211 maSrcPt ( rSrcPt ),
1212 maSrcSz ( rSrcSz )
1213{}
1214
1216{
1217 if (!AllowRect(pOut->LogicToPixel(tools::Rectangle(maDstPt, maDstSz))))
1218 return;
1219
1221}
1222
1224{
1225 return new MetaMaskScalePartAction( *this );
1226}
1227
1229{
1230 maDstPt.Move( nHorzMove, nVertMove );
1231}
1232
1233void MetaMaskScalePartAction::Scale( double fScaleX, double fScaleY )
1234{
1235 tools::Rectangle aRectangle(maDstPt, maDstSz);
1236 ImplScaleRect( aRectangle, fScaleX, fScaleY );
1237 maDstPt = aRectangle.TopLeft();
1238 maDstSz = aRectangle.GetSize();
1239}
1240
1243{}
1244
1246{}
1247
1250 maRect ( rRect ),
1251 maGradient (std::move( aGradient ))
1252{}
1253
1255{
1256 pOut->DrawGradient( maRect, maGradient );
1257}
1258
1260{
1261 return new MetaGradientAction( *this );
1262}
1263
1265{
1266 maRect.Move( nHorzMove, nVertMove );
1267}
1268
1269void MetaGradientAction::Scale( double fScaleX, double fScaleY )
1270{
1271 ImplScaleRect( maRect, fScaleX, fScaleY );
1272}
1273
1276{}
1277
1280 maPolyPoly (std::move( aPolyPoly )),
1281 maGradient (std::move( aGradient ))
1282{}
1283
1285{}
1286
1288{
1289 if( pOut->GetConnectMetaFile() )
1290 {
1291 pOut->GetConnectMetaFile()->AddAction( this );
1292 }
1293}
1294
1296{
1297 return new MetaGradientExAction( *this );
1298}
1299
1301{
1302 maPolyPoly.Move( nHorzMove, nVertMove );
1303}
1304
1305void MetaGradientExAction::Scale( double fScaleX, double fScaleY )
1306{
1307 for( sal_uInt16 i = 0, nCount = maPolyPoly.Count(); i < nCount; i++ )
1308 ImplScalePoly( maPolyPoly[ i ], fScaleX, fScaleY );
1309}
1310
1313{}
1314
1316{}
1317
1320 maPolyPoly (std::move( aPolyPoly )),
1321 maHatch ( rHatch )
1322{}
1323
1325{
1326 if (!AllowRect(pOut->LogicToPixel(maPolyPoly.GetBoundRect())))
1327 return;
1328 if (!AllowDim(pOut->LogicToPixel(Point(maHatch.GetDistance(), 0)).X()))
1329 return;
1330
1331 pOut->DrawHatch( maPolyPoly, maHatch );
1332}
1333
1335{
1336 return new MetaHatchAction( *this );
1337}
1338
1340{
1341 maPolyPoly.Move( nHorzMove, nVertMove );
1342}
1343
1344void MetaHatchAction::Scale( double fScaleX, double fScaleY )
1345{
1346 for( sal_uInt16 i = 0, nCount = maPolyPoly.Count(); i < nCount; i++ )
1347 ImplScalePoly( maPolyPoly[ i ], fScaleX, fScaleY );
1348}
1349
1352{}
1353
1355{}
1356
1358 const Wallpaper& rPaper ) :
1360 maRect ( rRect ),
1361 maWallpaper ( rPaper )
1362{}
1363
1365{
1366 pOut->DrawWallpaper( maRect, maWallpaper );
1367}
1368
1370{
1371 return new MetaWallpaperAction( *this );
1372}
1373
1375{
1376 maRect.Move( nHorzMove, nVertMove );
1377}
1378
1379void MetaWallpaperAction::Scale( double fScaleX, double fScaleY )
1380{
1381 ImplScaleRect( maRect, fScaleX, fScaleY );
1382}
1383
1386 mbClip ( false )
1387{}
1388
1390{}
1391
1394 maRegion (std::move( aRegion )),
1395 mbClip ( bClip )
1396{}
1397
1399{
1400 if( mbClip )
1401 pOut->SetClipRegion( maRegion );
1402 else
1403 pOut->SetClipRegion();
1404}
1405
1407{
1408 return new MetaClipRegionAction( *this );
1409}
1410
1412{
1413 maRegion.Move( nHorzMove, nVertMove );
1414}
1415
1416void MetaClipRegionAction::Scale( double fScaleX, double fScaleY )
1417{
1418 maRegion.Scale( fScaleX, fScaleY );
1419}
1420
1423{}
1424
1426{}
1427
1430 maRect ( rRect )
1431{}
1432
1434{
1435 pOut->IntersectClipRegion( maRect );
1436}
1437
1439{
1440 return new MetaISectRectClipRegionAction( *this );
1441}
1442
1444{
1445 maRect.Move( nHorzMove, nVertMove );
1446}
1447
1448void MetaISectRectClipRegionAction::Scale( double fScaleX, double fScaleY )
1449{
1450 ImplScaleRect( maRect, fScaleX, fScaleY );
1451}
1452
1455{}
1456
1458{}
1459
1462 maRegion (std::move( aRegion ))
1463{
1464}
1465
1467{
1468 if (!AllowRect(pOut->LogicToPixel(maRegion.GetBoundRect())))
1469 return;
1470
1471 pOut->IntersectClipRegion( maRegion );
1472}
1473
1475{
1476 return new MetaISectRegionClipRegionAction( *this );
1477}
1478
1480{
1481 maRegion.Move( nHorzMove, nVertMove );
1482}
1483
1484void MetaISectRegionClipRegionAction::Scale( double fScaleX, double fScaleY )
1485{
1486 maRegion.Scale( fScaleX, fScaleY );
1487}
1488
1491 mnHorzMove ( 0 ),
1492 mnVertMove ( 0 )
1493{}
1494
1496{}
1497
1500 mnHorzMove ( nHorzMove ),
1501 mnVertMove ( nVertMove )
1502{}
1503
1505{
1506 if (!AllowPoint(pOut->LogicToPixel(Point(mnHorzMove, mnVertMove))))
1507 return;
1508 pOut->MoveClipRegion( mnHorzMove, mnVertMove );
1509}
1510
1512{
1513 return new MetaMoveClipRegionAction( *this );
1514}
1515
1516void MetaMoveClipRegionAction::Scale( double fScaleX, double fScaleY )
1517{
1518 mnHorzMove = FRound( mnHorzMove * fScaleX );
1519 mnVertMove = FRound( mnVertMove * fScaleY );
1520}
1521
1524 mbSet ( false )
1525{}
1526
1528{}
1529
1532 maColor ( rColor ),
1533 mbSet ( bSet )
1534{}
1535
1537{
1538 if( mbSet )
1539 pOut->SetLineColor( maColor );
1540 else
1541 pOut->SetLineColor();
1542}
1543
1545{
1546 return new MetaLineColorAction( *this );
1547}
1548
1551 mbSet ( false )
1552{}
1553
1555{}
1556
1559 maColor ( rColor ),
1560 mbSet ( bSet )
1561{}
1562
1564{
1565 if( mbSet )
1566 pOut->SetFillColor( maColor );
1567 else
1568 pOut->SetFillColor();
1569}
1570
1572{
1573 return new MetaFillColorAction( *this );
1574}
1575
1578{}
1579
1581{}
1582
1585 maColor ( rColor )
1586{}
1587
1589{
1590 pOut->SetTextColor( maColor );
1591}
1592
1594{
1595 return new MetaTextColorAction( *this );
1596}
1597
1600 mbSet ( false )
1601{}
1602
1604{}
1605
1608 maColor ( rColor ),
1609 mbSet ( bSet )
1610{}
1611
1613{
1614 if( mbSet )
1615 pOut->SetTextFillColor( maColor );
1616 else
1617 pOut->SetTextFillColor();
1618}
1619
1621{
1622 return new MetaTextFillColorAction( *this );
1623}
1624
1627 mbSet ( false )
1628{}
1629
1631{}
1632
1635 maColor ( rColor ),
1636 mbSet ( bSet )
1637{}
1638
1640{
1641 if( mbSet )
1642 pOut->SetTextLineColor( maColor );
1643 else
1644 pOut->SetTextLineColor();
1645}
1646
1648{
1649 return new MetaTextLineColorAction( *this );
1650}
1651
1654 mbSet ( false )
1655{}
1656
1658{}
1659
1662 maColor ( rColor ),
1663 mbSet ( bSet )
1664{}
1665
1667{
1668 if( mbSet )
1669 pOut->SetOverlineColor( maColor );
1670 else
1671 pOut->SetOverlineColor();
1672}
1673
1675{
1676 return new MetaOverlineColorAction( *this );
1677}
1678
1681 maAlign ( ALIGN_TOP )
1682{}
1683
1685{}
1686
1689 maAlign ( aAlign )
1690{}
1691
1693{
1694 pOut->SetTextAlign( maAlign );
1695}
1696
1698{
1699 return new MetaTextAlignAction( *this );
1700}
1701
1704{}
1705
1707{}
1708
1711 maMapMode ( rMapMode )
1712{}
1713
1715{
1716 pOut->SetMapMode( maMapMode );
1717}
1718
1720{
1721 return new MetaMapModeAction( *this );
1722}
1723
1724void MetaMapModeAction::Scale( double fScaleX, double fScaleY )
1725{
1726 Point aPoint( maMapMode.GetOrigin() );
1727
1728 ImplScalePoint( aPoint, fScaleX, fScaleY );
1729 maMapMode.SetOrigin( aPoint );
1730}
1731
1734{}
1735
1737{}
1738
1741 maFont (std::move( aFont ))
1742{
1743 // #96876: because RTL_TEXTENCODING_SYMBOL is often set at the OpenSymbol font,
1744 // we change the textencoding to RTL_TEXTENCODING_UNICODE here, which seems
1745 // to be the right way; changing the textencoding at other sources
1746 // is too dangerous at the moment
1748 && ( maFont.GetCharSet() != RTL_TEXTENCODING_UNICODE ) )
1749 {
1750 SAL_WARN_IF(maFont.GetCharSet() == RTL_TEXTENCODING_SYMBOL, "vcl", "OpenSymbol should not have charset of RTL_TEXTENCODING_SYMBOL in new documents");
1751 maFont.SetCharSet( RTL_TEXTENCODING_UNICODE );
1752 }
1753}
1754
1756{
1757 pOut->SetFont( maFont );
1758}
1759
1761{
1762 return new MetaFontAction( *this );
1763}
1764
1765void MetaFontAction::Scale( double fScaleX, double fScaleY )
1766{
1767 const Size aSize(
1768 FRound(maFont.GetFontSize().Width() * fabs(fScaleX)),
1769 FRound(maFont.GetFontSize().Height() * fabs(fScaleY)));
1770 maFont.SetFontSize( aSize );
1771}
1772
1776{}
1777
1779{}
1780
1783 mnFlags ( nFlags )
1784{}
1785
1787{
1788 pOut->Push( mnFlags );
1789}
1790
1792{
1793 return new MetaPushAction( *this );
1794}
1795
1798{}
1799
1801{}
1802
1804{
1805 pOut->Pop();
1806}
1807
1809{
1810 return new MetaPopAction( *this );
1811}
1812
1815 meRasterOp ( RasterOp::OverPaint )
1816{}
1817
1819{}
1820
1823 meRasterOp ( eRasterOp )
1824{
1825}
1826
1828{
1829 pOut->SetRasterOp( meRasterOp );
1830}
1831
1833{
1834 return new MetaRasterOpAction( *this );
1835}
1836
1839 mnTransPercent ( 0 )
1840{}
1841
1843{}
1844
1847 maPolyPoly (std::move( aPolyPoly )),
1848 mnTransPercent ( nTransPercent )
1849{}
1850
1852{
1853 pOut->DrawTransparent( maPolyPoly, mnTransPercent );
1854}
1855
1857{
1858 return new MetaTransparentAction( *this );
1859}
1860
1862{
1863 maPolyPoly.Move( nHorzMove, nVertMove );
1864}
1865
1866void MetaTransparentAction::Scale( double fScaleX, double fScaleY )
1867{
1868 for( sal_uInt16 i = 0, nCount = maPolyPoly.Count(); i < nCount; i++ )
1869 ImplScalePoly( maPolyPoly[ i ], fScaleX, fScaleY );
1870}
1871
1874{}
1875
1877{}
1878
1880 const Size& rSize, Gradient aGradient ) :
1882 maMtf ( rMtf ),
1883 maPoint ( rPos ),
1884 maSize ( rSize ),
1885 maGradient (std::move( aGradient ))
1886{}
1887
1889{
1890 pOut->DrawTransparent( maMtf, maPoint, maSize, maGradient );
1891}
1892
1894{
1895 return new MetaFloatTransparentAction( *this );
1896}
1897
1899{
1900 maPoint.Move( nHorzMove, nVertMove );
1901}
1902
1903void MetaFloatTransparentAction::Scale( double fScaleX, double fScaleY )
1904{
1905 tools::Rectangle aRectangle(maPoint, maSize);
1906 ImplScaleRect( aRectangle, fScaleX, fScaleY );
1907 maPoint = aRectangle.TopLeft();
1908 maSize = aRectangle.GetSize();
1909}
1910
1912{
1913 maSVGTransparencyColorStops = rSVGTransparencyColorStops;
1914}
1915
1918{}
1919
1921{}
1922
1923MetaEPSAction::MetaEPSAction( const Point& rPoint, const Size& rSize,
1924 GfxLink aGfxLink, const GDIMetaFile& rSubst ) :
1926 maGfxLink (std::move( aGfxLink )),
1927 maSubst ( rSubst ),
1928 maPoint ( rPoint ),
1929 maSize ( rSize )
1930{}
1931
1933{
1934 pOut->DrawEPS( maPoint, maSize, maGfxLink, &maSubst );
1935}
1936
1938{
1939 return new MetaEPSAction( *this );
1940}
1941
1942void MetaEPSAction::Move( tools::Long nHorzMove, tools::Long nVertMove )
1943{
1944 maPoint.Move( nHorzMove, nVertMove );
1945}
1946
1947void MetaEPSAction::Scale( double fScaleX, double fScaleY )
1948{
1949 tools::Rectangle aRectangle(maPoint, maSize);
1950 ImplScaleRect( aRectangle, fScaleX, fScaleY );
1951 maPoint = aRectangle.TopLeft();
1952 maSize = aRectangle.GetSize();
1953}
1954
1957 mbSet ( false )
1958{}
1959
1961{}
1962
1963MetaRefPointAction::MetaRefPointAction( const Point& rRefPoint, bool bSet ) :
1965 maRefPoint ( rRefPoint ),
1966 mbSet ( bSet )
1967{}
1968
1970{
1971 if( mbSet )
1972 pOut->SetRefPoint( maRefPoint );
1973 else
1974 pOut->SetRefPoint();
1975}
1976
1978{
1979 return new MetaRefPointAction( *this );
1980}
1981
1984 mnValue ( 0 )
1985{
1986 ImplInitDynamicData( nullptr, 0UL );
1987}
1988
1991 maComment ( rAct.maComment ),
1992 mnValue ( rAct.mnValue )
1993{
1994 ImplInitDynamicData( rAct.mpData.get(), rAct.mnDataSize );
1995}
1996
1997MetaCommentAction::MetaCommentAction( OString aComment, sal_Int32 nValue, const sal_uInt8* pData, sal_uInt32 nDataSize ) :
1999 maComment (std::move( aComment )),
2000 mnValue ( nValue )
2001{
2002 ImplInitDynamicData( pData, nDataSize );
2003}
2004
2006{
2007}
2008
2009void MetaCommentAction::ImplInitDynamicData( const sal_uInt8* pData, sal_uInt32 nDataSize )
2010{
2011 if ( nDataSize && pData )
2012 {
2013 mnDataSize = nDataSize;
2014 mpData.reset( new sal_uInt8[ mnDataSize ] );
2015 memcpy( mpData.get(), pData, mnDataSize );
2016 }
2017 else
2018 {
2019 mnDataSize = 0;
2020 mpData = nullptr;
2021 }
2022}
2023
2025{
2026 if ( pOut->GetConnectMetaFile() )
2027 {
2028 pOut->GetConnectMetaFile()->AddAction( this );
2029 }
2030}
2031
2033{
2034 return new MetaCommentAction( *this );
2035}
2036
2038{
2039 if ( !(nXMove || nYMove) )
2040 return;
2041
2042 if ( !(mnDataSize && mpData) )
2043 return;
2044
2045 bool bPathStroke = (maComment == "XPATHSTROKE_SEQ_BEGIN");
2046 if ( !(bPathStroke || maComment == "XPATHFILL_SEQ_BEGIN") )
2047 return;
2048
2049 SvMemoryStream aMemStm( static_cast<void*>(mpData.get()), mnDataSize, StreamMode::READ );
2050 SvMemoryStream aDest;
2051 if ( bPathStroke )
2052 {
2053 SvtGraphicStroke aStroke;
2054 ReadSvtGraphicStroke( aMemStm, aStroke );
2055
2056 tools::Polygon aPath;
2057 aStroke.getPath( aPath );
2058 aPath.Move( nXMove, nYMove );
2059 aStroke.setPath( aPath );
2060
2061 tools::PolyPolygon aStartArrow;
2062 aStroke.getStartArrow(aStartArrow);
2063 aStartArrow.Move(nXMove, nYMove);
2064 aStroke.setStartArrow(aStartArrow);
2065
2066 tools::PolyPolygon aEndArrow;
2067 aStroke.getEndArrow(aEndArrow);
2068 aEndArrow.Move(nXMove, nYMove);
2069 aStroke.setEndArrow(aEndArrow);
2070
2071 WriteSvtGraphicStroke( aDest, aStroke );
2072 }
2073 else
2074 {
2075 SvtGraphicFill aFill;
2076 ReadSvtGraphicFill( aMemStm, aFill );
2077
2078 tools::PolyPolygon aPath;
2079 aFill.getPath( aPath );
2080 aPath.Move( nXMove, nYMove );
2081 aFill.setPath( aPath );
2082
2083 WriteSvtGraphicFill( aDest, aFill );
2084 }
2085 mpData.reset();
2086 ImplInitDynamicData( static_cast<const sal_uInt8*>( aDest.GetData() ), aDest.Tell() );
2087}
2088
2089// SJ: 25.07.06 #i56656# we are not able to mirror certain kind of
2090// comments properly, especially the XPATHSTROKE and XPATHFILL lead to
2091// problems, so it is better to remove these comments when mirroring
2092// FIXME: fake comment to apply the next hunk in the right location
2093void MetaCommentAction::Scale( double fXScale, double fYScale )
2094{
2095 if (( fXScale == 1.0 ) && ( fYScale == 1.0 ))
2096 return;
2097
2098 if ( !(mnDataSize && mpData) )
2099 return;
2100
2101 bool bPathStroke = (maComment == "XPATHSTROKE_SEQ_BEGIN");
2102 if ( bPathStroke || maComment == "XPATHFILL_SEQ_BEGIN" )
2103 {
2104 SvMemoryStream aMemStm( static_cast<void*>(mpData.get()), mnDataSize, StreamMode::READ );
2105 SvMemoryStream aDest;
2106 if ( bPathStroke )
2107 {
2108 SvtGraphicStroke aStroke;
2109 ReadSvtGraphicStroke( aMemStm, aStroke );
2110 aStroke.scale( fXScale, fYScale );
2111 WriteSvtGraphicStroke( aDest, aStroke );
2112 }
2113 else
2114 {
2115 SvtGraphicFill aFill;
2116 ReadSvtGraphicFill( aMemStm, aFill );
2117 tools::PolyPolygon aPath;
2118 aFill.getPath( aPath );
2119 aPath.Scale( fXScale, fYScale );
2120 aFill.setPath( aPath );
2121 WriteSvtGraphicFill( aDest, aFill );
2122 }
2123 mpData.reset();
2124 ImplInitDynamicData( static_cast<const sal_uInt8*>( aDest.GetData() ), aDest.Tell() );
2125 } else if( maComment == "EMF_PLUS_HEADER_INFO" ){
2126 SvMemoryStream aMemStm( static_cast<void*>(mpData.get()), mnDataSize, StreamMode::READ );
2127 SvMemoryStream aDest;
2128
2129 sal_Int32 nLeft(0), nRight(0), nTop(0), nBottom(0);
2130 sal_Int32 nPixX(0), nPixY(0), nMillX(0), nMillY(0);
2131 float m11(0), m12(0), m21(0), m22(0), mdx(0), mdy(0);
2132
2133 // read data
2134 aMemStm.ReadInt32( nLeft ).ReadInt32( nTop ).ReadInt32( nRight ).ReadInt32( nBottom );
2135 aMemStm.ReadInt32( nPixX ).ReadInt32( nPixY ).ReadInt32( nMillX ).ReadInt32( nMillY );
2136 aMemStm.ReadFloat( m11 ).ReadFloat( m12 ).ReadFloat( m21 ).ReadFloat( m22 ).ReadFloat( mdx ).ReadFloat( mdy );
2137
2138 // add scale to the transformation
2139 m11 *= fXScale;
2140 m12 *= fXScale;
2141 m22 *= fYScale;
2142 m21 *= fYScale;
2143
2144 // prepare new data
2145 aDest.WriteInt32( nLeft ).WriteInt32( nTop ).WriteInt32( nRight ).WriteInt32( nBottom );
2146 aDest.WriteInt32( nPixX ).WriteInt32( nPixY ).WriteInt32( nMillX ).WriteInt32( nMillY );
2147 aDest.WriteFloat( m11 ).WriteFloat( m12 ).WriteFloat( m21 ).WriteFloat( m22 ).WriteFloat( mdx ).WriteFloat( mdy );
2148
2149 // save them
2150 ImplInitDynamicData( static_cast<const sal_uInt8*>( aDest.GetData() ), aDest.Tell() );
2151 }
2152}
2153
2156 mnLayoutMode( vcl::text::ComplexTextLayoutFlags::Default )
2157{}
2158
2160{}
2161
2164 mnLayoutMode( nLayoutMode )
2165{}
2166
2168{
2169 pOut->SetLayoutMode( mnLayoutMode );
2170}
2171
2173{
2174 return new MetaLayoutModeAction( *this );
2175}
2176
2179 meTextLanguage( LANGUAGE_DONTKNOW )
2180{}
2181
2183{}
2184
2187 meTextLanguage( eTextLanguage )
2188{}
2189
2191{
2192 pOut->SetDigitLanguage( meTextLanguage );
2193}
2194
2196{
2197 return new MetaTextLanguageAction( *this );
2198}
2199
2200/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
basegfx::BColor maColor
DrawTextFlags
geometry::RealSize2D maSize
RasterOp
Definition: RasterOp.hxx:23
B2DPoint maPoint
const Size & GetSizePixel() const
Definition: bitmapex.hxx:73
Size GetSizePixel() const
Definition: hatch.hxx:47
tools::Long GetDistance() const
Definition: hatch.hxx:65
void assign(KernArraySpan other)
Definition: kernarray.hxx:76
void set(size_t nIndex, sal_Int32 nValue)
Definition: kernarray.hxx:70
bool empty() const
Definition: kernarray.hxx:74
void SetOrigin(const Point &rOrigin)
Definition: mapmod.cxx:138
const Point & GetOrigin() const
Definition: mapmod.cxx:183
virtual ~MetaAction() override
Definition: metaact.cxx:95
MetaAction()
Definition: metaact.cxx:80
virtual void Execute(OutputDevice *pOut)
Definition: metaact.cxx:99
virtual void Scale(double fScaleX, double fScaleY)
Definition: metaact.cxx:112
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove)
Definition: metaact.cxx:108
virtual rtl::Reference< MetaAction > Clone() const
Definition: metaact.cxx:103
virtual ~MetaArcAction() override
Definition: metaact.cxx:335
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:346
Point maStartPt
Definition: metaact.hxx:286
Point maEndPt
Definition: metaact.hxx:287
tools::Rectangle maRect
Definition: metaact.hxx:285
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:351
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:356
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:363
Bitmap maBmp
Definition: metaact.hxx:673
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:862
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:857
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:867
virtual ~MetaBmpAction() override
Definition: metaact.cxx:843
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:852
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1013
virtual ~MetaBmpExAction() override
Definition: metaact.cxx:1004
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1018
BitmapEx maBmpEx
Definition: metaact.hxx:778
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1023
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1028
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1058
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1063
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1048
virtual ~MetaBmpExScaleAction() override
Definition: metaact.cxx:1037
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1068
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1104
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1094
virtual ~MetaBmpExScalePartAction() override
Definition: metaact.cxx:1080
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1109
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1099
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:938
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:948
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:943
virtual ~MetaBmpScaleAction() override
Definition: metaact.cxx:876
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:926
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:992
virtual ~MetaBmpScalePartAction() override
Definition: metaact.cxx:960
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:982
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:974
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:987
tools::Rectangle maRect
Definition: metaact.hxx:353
virtual ~MetaChordAction() override
Definition: metaact.cxx:413
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:434
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:429
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:441
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:424
vcl::Region maRegion
Definition: metaact.hxx:1122
virtual ~MetaClipRegionAction() override
Definition: metaact.cxx:1389
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1406
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1416
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1411
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1398
sal_uInt32 mnDataSize
Definition: metaact.hxx:1689
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:2024
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:2037
SAL_DLLPRIVATE void ImplInitDynamicData(const sal_uInt8 *pData, sal_uInt32 nDataSize)
Definition: metaact.cxx:2009
std::unique_ptr< sal_uInt8[]> mpData
Definition: metaact.hxx:1691
virtual ~MetaCommentAction() override
Definition: metaact.cxx:2005
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:2032
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:2093
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1942
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1932
GfxLink maGfxLink
Definition: metaact.hxx:1623
virtual ~MetaEPSAction() override
Definition: metaact.cxx:1920
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1937
GDIMetaFile maSubst
Definition: metaact.hxx:1624
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1947
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:321
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:311
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:326
tools::Rectangle maRect
Definition: metaact.hxx:258
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:316
virtual ~MetaEllipseAction() override
Definition: metaact.cxx:303
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1571
virtual ~MetaFillColorAction() override
Definition: metaact.cxx:1554
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1563
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1898
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1893
void addSVGTransparencyColorStops(const basegfx::BColorStops &rSVGTransparencyColorStops)
Definition: metaact.cxx:1911
std::optional< basegfx::BColorStops > maSVGTransparencyColorStops
Definition: metaact.hxx:1583
virtual ~MetaFloatTransparentAction() override
Definition: metaact.cxx:1876
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1888
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1903
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1760
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1765
vcl::Font maFont
Definition: metaact.hxx:1449
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1755
virtual ~MetaFontAction() override
Definition: metaact.cxx:1736
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1269
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1254
Gradient maGradient
Definition: metaact.hxx:1003
tools::Rectangle maRect
Definition: metaact.hxx:1002
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1259
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1264
virtual ~MetaGradientAction() override
Definition: metaact.cxx:1245
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1295
virtual ~MetaGradientExAction() override
Definition: metaact.cxx:1284
tools::PolyPolygon maPolyPoly
Definition: metaact.hxx:1032
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1287
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1300
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1305
virtual ~MetaHatchAction() override
Definition: metaact.cxx:1315
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1334
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1339
tools::PolyPolygon maPolyPoly
Definition: metaact.hxx:1062
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1324
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1344
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1433
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1448
virtual ~MetaISectRectClipRegionAction() override
Definition: metaact.cxx:1425
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1438
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1443
virtual ~MetaISectRegionClipRegionAction() override
Definition: metaact.cxx:1457
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1466
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1474
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1479
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1484
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:2167
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:2172
vcl::text::ComplexTextLayoutFlags mnLayoutMode
Definition: metaact.hxx:1723
virtual ~MetaLayoutModeAction() override
Definition: metaact.cxx:2159
LineInfo maLineInfo
Definition: metaact.hxx:162
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:210
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:202
virtual ~MetaLineAction() override
Definition: metaact.cxx:185
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:215
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:221
Point maStartPt
Definition: metaact.hxx:163
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1536
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1544
virtual ~MetaLineColorAction() override
Definition: metaact.cxx:1527
virtual ~MetaMapModeAction() override
Definition: metaact.cxx:1706
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1714
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1724
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1719
Bitmap maBmp
Definition: metaact.hxx:886
virtual ~MetaMaskAction() override
Definition: metaact.cxx:1121
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1143
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1133
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1148
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1138
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1182
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1177
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1187
virtual ~MetaMaskScaleAction() override
Definition: metaact.cxx:1157
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1170
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1215
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1223
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1228
virtual ~MetaMaskScalePartAction() override
Definition: metaact.cxx:1199
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1233
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1504
virtual ~MetaMoveClipRegionAction() override
Definition: metaact.cxx:1495
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1516
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1511
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1666
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1674
virtual ~MetaOverlineColorAction() override
Definition: metaact.cxx:1657
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:395
virtual ~MetaPieAction() override
Definition: metaact.cxx:374
Point maStartPt
Definition: metaact.hxx:320
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:385
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:390
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:402
tools::Rectangle maRect
Definition: metaact.hxx:319
Point maEndPt
Definition: metaact.hxx:321
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:139
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:134
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:144
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:129
virtual ~MetaPixelAction() override
Definition: metaact.cxx:120
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:161
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:176
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:171
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:166
virtual ~MetaPointAction() override
Definition: metaact.cxx:153
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:506
tools::Polygon maPoly
Definition: metaact.hxx:388
virtual ~MetaPolyLineAction() override
Definition: metaact.cxx:452
LineInfo maLineInfo
Definition: metaact.hxx:387
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:490
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:501
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:511
tools::PolyPolygon maPolyPoly
Definition: metaact.hxx:445
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:571
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:561
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:576
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:566
virtual ~MetaPolyPolygonAction() override
Definition: metaact.cxx:553
virtual ~MetaPolygonAction() override
Definition: metaact.cxx:521
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:544
tools::Polygon maPoly
Definition: metaact.hxx:418
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:529
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:534
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:539
virtual ~MetaPopAction() override
Definition: metaact.cxx:1800
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1803
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1808
virtual ~MetaPushAction() override
Definition: metaact.cxx:1778
vcl::PushFlags mnFlags
Definition: metaact.hxx:1481
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1786
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1791
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1832
virtual ~MetaRasterOpAction() override
Definition: metaact.cxx:1818
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1827
RasterOp meRasterOp
Definition: metaact.hxx:1521
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:240
tools::Rectangle maRect
Definition: metaact.hxx:197
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:245
virtual ~MetaRectAction() override
Definition: metaact.cxx:232
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:255
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:250
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1977
virtual ~MetaRefPointAction() override
Definition: metaact.cxx:1960
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1969
tools::Rectangle maRect
Definition: metaact.hxx:224
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:282
sal_uInt32 mnHorzRound
Definition: metaact.hxx:225
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:292
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:287
virtual ~MetaRoundRectAction() override
Definition: metaact.cxx:266
sal_uInt32 mnVertRound
Definition: metaact.hxx:226
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:277
virtual ~MetaStretchTextAction() override
Definition: metaact.cxx:719
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:741
sal_uInt32 mnWidth
Definition: metaact.hxx:559
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:751
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:733
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:746
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:618
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:608
virtual ~MetaTextAction() override
Definition: metaact.cxx:588
OUString maStr
Definition: metaact.hxx:473
sal_Int32 mnIndex
Definition: metaact.hxx:474
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:613
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:600
sal_Int32 mnLen
Definition: metaact.hxx:475
virtual ~MetaTextAlignAction() override
Definition: metaact.cxx:1684
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1692
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1697
KernArray maDXAry
Definition: metaact.hxx:511
virtual ~MetaTextArrayAction() override
Definition: metaact.cxx:672
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:681
void SetKashidaArray(std::vector< sal_Bool > aArray)
Definition: metaact.cxx:707
void SetDXArray(KernArray aArray)
Definition: metaact.cxx:702
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:676
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:691
sal_Int32 mnIndex
Definition: metaact.hxx:513
std::vector< sal_Bool > maKashidaAry
Definition: metaact.hxx:512
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:686
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1593
virtual ~MetaTextColorAction() override
Definition: metaact.cxx:1580
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1588
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1620
virtual ~MetaTextFillColorAction() override
Definition: metaact.cxx:1603
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1612
virtual ~MetaTextLanguageAction() override
Definition: metaact.cxx:2182
LanguageType meTextLanguage
Definition: metaact.hxx:1747
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:2190
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:2195
virtual ~MetaTextLineAction() override
Definition: metaact.cxx:803
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:828
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:818
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:833
FontStrikeout meStrikeout
Definition: metaact.hxx:634
tools::Long mnWidth
Definition: metaact.hxx:633
FontLineStyle meUnderline
Definition: metaact.hxx:635
FontLineStyle meOverline
Definition: metaact.hxx:636
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:823
virtual ~MetaTextLineColorAction() override
Definition: metaact.cxx:1630
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1639
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1647
virtual ~MetaTextRectAction() override
Definition: metaact.cxx:761
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:780
DrawTextFlags mnStyle
Definition: metaact.hxx:600
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:772
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:785
tools::Rectangle maRect
Definition: metaact.hxx:598
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:790
sal_uInt16 mnTransPercent
Definition: metaact.hxx:1546
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1856
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1861
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1851
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1866
virtual ~MetaTransparentAction() override
Definition: metaact.cxx:1842
tools::PolyPolygon maPolyPoly
Definition: metaact.hxx:1545
virtual void Move(tools::Long nHorzMove, tools::Long nVertMove) override
Definition: metaact.cxx:1374
tools::Rectangle maRect
Definition: metaact.hxx:1092
Wallpaper maWallpaper
Definition: metaact.hxx:1093
virtual void Scale(double fScaleX, double fScaleY) override
Definition: metaact.cxx:1379
virtual void Execute(OutputDevice *pOut) override
Definition: metaact.cxx:1364
virtual ~MetaWallpaperAction() override
Definition: metaact.cxx:1354
virtual rtl::Reference< MetaAction > Clone() const override
Definition: metaact.cxx:1369
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
Definition: outdev.hxx:170
constexpr tools::Long Y() const
void setX(tools::Long nX)
void Move(tools::Long nHorzMove, tools::Long nVertMove)
void setY(tools::Long nY)
constexpr tools::Long X() const
constexpr tools::Long Height() const
constexpr tools::Long Width() const
const void * GetData()
SvStream & WriteInt32(sal_Int32 nInt32)
sal_uInt64 Tell() const
SvStream & ReadFloat(float &rFloat)
SvStream & WriteFloat(float nFloat)
SvStream & ReadInt32(sal_Int32 &rInt32)
Encapsulates geometry and associated attributes of a filled area.
void getPath(tools::PolyPolygon &) const
Query path to fill.
void setPath(const tools::PolyPolygon &rPath)
Set path to fill.
Encapsulates geometry and associated attributes of a graphical 'pen stroke'.
void getPath(tools::Polygon &) const
Query path to stroke.
void getStartArrow(tools::PolyPolygon &) const
Get the polygon that is put at the start of the line.
void getEndArrow(tools::PolyPolygon &) const
Get the polygon that is put at the end of the line.
void setEndArrow(const tools::PolyPolygon &)
Set the polygon that is put at the end of the line.
void setPath(const tools::Polygon &)
Set path to stroke.
void scale(double fScaleX, double fScaleY)
Affine scaling in both X and Y dimensions.
void setStartArrow(const tools::PolyPolygon &)
Set the polygon that is put at the start of the line.
sal_uInt16 Count() const
void Move(tools::Long nHorzMove, tools::Long nVertMove)
tools::Rectangle GetBoundRect() const
void Scale(double fScaleX, double fScaleY)
sal_uInt16 GetSize() const
void Move(tools::Long nHorzMove, tools::Long nVertMove)
tools::Rectangle GetBoundRect() const
constexpr Point TopLeft() const
constexpr Size GetSize() const
void Move(tools::Long nHorzMoveDelta, tools::Long nVertMoveDelta)
constexpr Point BottomRight() const
static bool IsFuzzing()
void SetFontSize(const Size &)
Definition: font/font.cxx:149
const OUString & GetFamilyName() const
Definition: font/font.cxx:904
void SetCharSet(rtl_TextEncoding)
Definition: font/font.cxx:161
const Size & GetFontSize() const
Definition: font/font.cxx:907
rtl_TextEncoding GetCharSet() const
Definition: font/font.cxx:913
void Move(tools::Long nHorzMove, tools::Long nVertMove)
Definition: region.cxx:401
void Scale(double fScaleX, double fScaleY)
Definition: region.cxx:454
tools::Rectangle GetBoundRect() const
Definition: region.cxx:1219
int nCount
sal_Int16 nValue
UNOTOOLS_DLLPUBLIC bool IsOpenSymbol(std::u16string_view rFontName)
FontLineStyle
LINESTYLE_NONE
FontStrikeout
STRIKEOUT_NONE
ALIGN_TOP
FuncFlags mnFlags
SvStream & WriteSvtGraphicFill(SvStream &rOStm, const SvtGraphicFill &rClass)
SvStream & ReadSvtGraphicStroke(SvStream &rIStm, SvtGraphicStroke &rClass)
SvStream & ReadSvtGraphicFill(SvStream &rIStm, SvtGraphicFill &rClass)
SvStream & WriteSvtGraphicStroke(SvStream &rOStm, const SvtGraphicStroke &rClass)
tools::Long FRound(double fVal)
sal_Int32 nIndex
#define LANGUAGE_DONTKNOW
#define SAL_WARN_IF(condition, area, stream)
#define SAL_WARN(area, stream)
COMMENT
static bool AllowRect(const tools::Rectangle &rRect)
Definition: metaact.cxx:485
static bool AllowDim(tools::Long nDim)
Definition: metaact.cxx:466
static bool AllowScale(const Size &rSource, const Size &rDest)
Definition: metaact.cxx:887
static bool AllowPoint(const Point &rPoint)
Definition: metaact.cxx:480
MetaActionType
aStr
std::unique_ptr< sal_Int32[]> pData
def text(shape, orig_st)
NONE
const sal_uInt16 TEXTCOLOR
int i
enumrange< T >::Iterator begin(enumrange< T >)
end
TextAlign
long Long
ComplexTextLayoutFlags
Definition: State.hxx:76
PushFlags
Definition: State.hxx:40
QPRO_FUNC_TYPE nType
OUString maComment
sal_Int32 mnType
double mnWidth
const double mnValue
sal_uIntPtr sal_uLong
sal_uInt32 mnIndex
TEXT
LINE
#define TEXTLINE
unsigned char sal_uInt8
oslFileHandle & pOut