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