LibreOffice Module vcl (master) 1
salgdi.hxx
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#pragma once
21
22#include <sal/config.h>
23
24#include <vcl/outdev.hxx>
25
26#include "impfontmetricdata.hxx"
27#include "salgdiimpl.hxx"
28#include "sallayout.hxx"
29#include "SalGradient.hxx"
32
33#include <config_cairo_canvas.h>
34
35#include <map>
36#include <vector>
37
38class SalBitmap;
39class FontAttributes;
40namespace vcl::font {
41 class FontSelectPattern;
42 class PhysicalFontFace;
43 class PhysicalFontCollection;
44}
45class SalLayout;
46namespace tools { class Rectangle; }
47class OutputDevice;
48class FreetypeFont;
50
51namespace basegfx {
52 class B2DVector;
53 class B2DPolygon;
54 class B2DPolyPolygon;
55}
56
57namespace vcl
58{
59class AbstractTrueTypeFont;
60class FileDefinitionWidgetDraw;
62}
63
64typedef sal_Unicode sal_Ucs; // TODO: use sal_UCS4 instead of sal_Unicode
65
66// note: if you add any new methods to class SalGraphics using coordinates
67// make sure they have a corresponding protected pure virtual method
68// which has to be implemented by the platform dependent part.
69// Add a method that performs coordinate mirroring if required, (see
70// existing methods as sample) and then calls the equivalent pure method.
71
72// note: all positions are in pixel and relative to
73// the top/left-position of the virtual output area
74
76{
77public:
79 ~SalGraphics() COVERITY_NOEXCEPT_FALSE override;
80
81 virtual SalGraphicsImpl* GetImpl() const = 0;
82
83 void setAntiAlias(bool bNew)
84 {
85 m_bAntiAlias = bNew;
86
87 // Temporary store in both
88 if (GetImpl())
89 GetImpl()->setAntiAlias(bNew);
90 }
91
92 bool getAntiAlias() const
93 {
94 return m_bAntiAlias;
95 }
96
97 // public SalGraphics methods, the interface to the independent vcl part
98
99 // get device resolution
100 virtual void GetResolution( sal_Int32& rDPIX, sal_Int32& rDPIY ) = 0;
101
102 // get the depth of the device
103 virtual sal_uInt16 GetBitCount() const = 0;
104
105 // get the width of the device
106 virtual tools::Long GetGraphicsWidth() const = 0;
107
108 // set the clip region to empty
109 virtual void ResetClipRegion() = 0;
110
111 // set the line color to transparent (= don't draw lines)
112
113 virtual void SetLineColor() = 0;
114
115 // set the line color to a specific color
116 virtual void SetLineColor( Color nColor ) = 0;
117
118 // set the fill color to transparent (= don't fill)
119 virtual void SetFillColor() = 0;
120
121 // set the fill color to a specific color, shapes will be
122 // filled accordingly
123 virtual void SetFillColor( Color nColor ) = 0;
124
125 // enable/disable XOR drawing
126 virtual void SetXORMode( bool bSet, bool bInvertOnly ) = 0;
127
128 // set line color for raster operations
129 virtual void SetROPLineColor( SalROPColor nROPColor ) = 0;
130
131 // set fill color for raster operations
132 virtual void SetROPFillColor( SalROPColor nROPColor ) = 0;
133
134 // set the text color to a specific color
135 virtual void SetTextColor( Color nColor ) = 0;
136
137 // set the font
138 virtual void SetFont(LogicalFontInstance*, int nFallbackLevel) = 0;
139
140 // release the fonts
141 void ReleaseFonts() { SetFont( nullptr, 0 ); }
142
143 // get the current font's metrics
144 virtual void GetFontMetric( ImplFontMetricDataRef&, int nFallbackLevel ) = 0;
145
146 // get the repertoire of the current font
147 virtual FontCharMapRef GetFontCharMap() const = 0;
148
149 // get the layout capabilities of the current font
150 virtual bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const = 0;
151
152 // graphics must fill supplied font list
154
155 // graphics must drop any cached font info
156 virtual void ClearDevFontCache() = 0;
157
158 virtual bool AddTempDevFont(
160 const OUString& rFileURL,
161 const OUString& rFontName ) = 0;
162
163 // GetEmbedFontData: gets the font data for a font marked
164 // embeddable by GetDevFontList or NULL in case of error
165 // parameters: pFont: describes the font in question
166 // pDataLen: out parameter, contains the byte length of the returned buffer
167 virtual const void* GetEmbedFontData(const vcl::font::PhysicalFontFace* pFont, tools::Long* pDataLen) = 0;
168
169 // free the font data again
170 virtual void FreeEmbedFontData( const void* pData, tools::Long nDataLen ) = 0;
171
172 virtual std::unique_ptr<GenericSalLayout>
173 GetTextLayout(int nFallbackLevel) = 0;
174 virtual void DrawTextLayout( const GenericSalLayout& ) = 0;
175
176 virtual bool supportsOperation( OutDevSupportType ) const = 0;
177
178 // mirroring specifics
179 SalLayoutFlags GetLayout() const { return m_nLayout; }
180 void SetLayout( SalLayoutFlags aLayout ) { m_nLayout = aLayout;}
181
182 void mirror( tools::Long& nX, const OutputDevice& rOutDev ) const;
183 // only called mirror2 to avoid ambiguity
184 [[nodiscard]] tools::Long mirror2( tools::Long nX, const OutputDevice& rOutDev ) const;
185 void mirror( tools::Long& nX, tools::Long nWidth, const OutputDevice& rOutDev, bool bBack = false ) const;
186 bool mirror( sal_uInt32 nPoints, const Point *pPtAry, Point *pPtAry2, const OutputDevice& rOutDev ) const;
187 void mirror( tools::Rectangle& rRect, const OutputDevice&, bool bBack = false ) const;
188 void mirror( vcl::Region& rRgn, const OutputDevice& rOutDev ) const;
189 void mirror( ImplControlValue&, const OutputDevice& ) const;
190 basegfx::B2DPolyPolygon mirror( const basegfx::B2DPolyPolygon& i_rPoly, const OutputDevice& rOutDev ) const;
191 const basegfx::B2DHomMatrix& getMirror( const OutputDevice& rOutDev ) const;
192
193 // non virtual methods; these do possible coordinate mirroring and
194 // then delegate to protected virtual methods
195 bool SetClipRegion( const vcl::Region&, const OutputDevice& rOutDev );
196
197 // draw --> LineColor and FillColor and RasterOp and ClipRegion
198 void DrawPixel( tools::Long nX, tools::Long nY, const OutputDevice& rOutDev );
199 void DrawPixel( tools::Long nX, tools::Long nY, Color nColor, const OutputDevice& rOutDev );
200
201 void DrawLine( tools::Long nX1, tools::Long nY1, tools::Long nX2, tools::Long nY2, const OutputDevice& rOutDev );
202
203 void DrawRect( tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight, const OutputDevice& rOutDev );
204
205 void DrawPolyLine( sal_uInt32 nPoints, Point const * pPtAry, const OutputDevice& rOutDev );
206
207 void DrawPolygon( sal_uInt32 nPoints, const Point* pPtAry, const OutputDevice& rOutDev );
208
209 void DrawPolyPolygon(
210 sal_uInt32 nPoly,
211 const sal_uInt32* pPoints,
212 const Point** pPtAry,
213 const OutputDevice& rOutDev );
214
215 bool DrawPolyPolygon(
216 const basegfx::B2DHomMatrix& rObjectToDevice,
217 const basegfx::B2DPolyPolygon &i_rPolyPolygon,
218 double i_fTransparency,
219 const OutputDevice& i_rOutDev);
220
221 bool DrawPolyLine(
222 const basegfx::B2DHomMatrix& rObjectToDevice,
223 const basegfx::B2DPolygon& i_rPolygon,
224 double i_fTransparency,
225 double i_fLineWidth,
226 const std::vector< double >* i_pStroke, // MM01
227 basegfx::B2DLineJoin i_eLineJoin,
228 css::drawing::LineCap i_eLineCap,
229 double i_fMiterMinimumAngle,
230 bool bPixelSnapHairline,
231 const OutputDevice& i_rOutDev);
232
233 bool DrawPolyLineBezier(
234 sal_uInt32 nPoints,
235 const Point* pPtAry,
236 const PolyFlags* pFlgAry,
237 const OutputDevice& rOutDev );
238
239 bool DrawPolygonBezier(
240 sal_uInt32 nPoints,
241 const Point* pPtAry,
242 const PolyFlags* pFlgAry,
243 const OutputDevice& rOutDev );
244
245 bool DrawPolyPolygonBezier(
246 sal_uInt32 nPoly,
247 const sal_uInt32* pPoints,
248 const Point* const* pPtAry,
249 const PolyFlags* const* pFlgAry,
250 const OutputDevice& rOutDev );
251
252 bool DrawGradient(
253 const tools::PolyPolygon& rPolyPoly,
254 const Gradient& rGradient,
255 const OutputDevice& rOutDev);
256
257 // CopyArea --> No RasterOp, but ClipRegion
258 void CopyArea(
259 tools::Long nDestX, tools::Long nDestY,
260 tools::Long nSrcX, tools::Long nSrcY,
261 tools::Long nSrcWidth, tools::Long nSrcHeight,
262 const OutputDevice& rOutDev );
263
264 // CopyBits --> RasterOp and ClipRegion
265 // CopyBits() CopyBits on same Graphics
266 void CopyBits(
267 const SalTwoRect& rPosAry,
268 const OutputDevice& rOutDev);
269
270 // CopyBits --> RasterOp and ClipRegion
271 // CopyBits() CopyBits on different Graphics
272 void CopyBits(
273 const SalTwoRect& rPosAry,
274 SalGraphics& rSrcGraphics,
275 const OutputDevice& rOutDev,
276 const OutputDevice& rSrcOutDev );
277
278
279 void DrawBitmap(
280 const SalTwoRect& rPosAry,
281 const SalBitmap& rSalBitmap,
282 const OutputDevice& rOutDev );
283
284 void DrawBitmap(
285 const SalTwoRect& rPosAry,
286 const SalBitmap& rSalBitmap,
287 const SalBitmap& rTransparentBitmap,
288 const OutputDevice& rOutDev );
289
290 void DrawMask(
291 const SalTwoRect& rPosAry,
292 const SalBitmap& rSalBitmap,
293 Color nMaskColor,
294 const OutputDevice& rOutDev );
295
296 std::shared_ptr<SalBitmap> GetBitmap(
298 tools::Long nWidth, tools::Long nHeight,
299 const OutputDevice& rOutDev );
300
301 Color GetPixel(
303 const OutputDevice& rOutDev );
304
305 // invert --> ClipRegion (only Windows)
306 void Invert(
308 tools::Long nWidth, tools::Long nHeight,
309 SalInvert nFlags,
310 const OutputDevice& rOutDev );
311
312 void Invert(
313 sal_uInt32 nPoints,
314 const Point* pPtAry,
315 SalInvert nFlags,
316 const OutputDevice& rOutDev );
317
318 bool DrawEPS(
320 tools::Long nWidth, tools::Long nHeight,
321 void* pPtr,
322 sal_uInt32 nSize,
323 const OutputDevice& rOutDev );
324
325 // native widget rendering functions
326
330 inline bool IsNativeControlSupported(ControlType, ControlPart);
331
335 bool HitTestNativeScrollbar(
336 ControlPart nPart,
337 const tools::Rectangle& rControlRegion,
338 const Point& aPos,
339 bool& rIsInside,
340 const OutputDevice& rOutDev);
341
345 bool DrawNativeControl(
346 ControlType nType,
347 ControlPart nPart,
348 const tools::Rectangle& rControlRegion,
349 ControlState nState,
350 const ImplControlValue& aValue,
351 const OUString& aCaption,
352 const OutputDevice& rOutDev,
353 const Color& rBackgroundColor = COL_AUTO );
354
358 bool GetNativeControlRegion(
359 ControlType nType,
360 ControlPart nPart,
361 const tools::Rectangle& rControlRegion,
362 ControlState nState,
363 const ImplControlValue& aValue,
364 tools::Rectangle &rNativeBoundingRegion,
365 tools::Rectangle &rNativeContentRegion,
366 const OutputDevice& rOutDev );
367
371 inline bool UpdateSettings(AllSettings&);
372
373 bool BlendBitmap(
374 const SalTwoRect& rPosAry,
375 const SalBitmap& rSalBitmap,
376 const OutputDevice& rOutDev );
377
378 bool BlendAlphaBitmap(
379 const SalTwoRect& rPosAry,
380 const SalBitmap& rSalSrcBitmap,
381 const SalBitmap& rSalMaskBitmap,
382 const SalBitmap& rSalAlphaBitmap,
383 const OutputDevice& rOutDev );
384
385 bool DrawAlphaBitmap(
386 const SalTwoRect&,
387 const SalBitmap& rSourceBitmap,
388 const SalBitmap& rAlphaBitmap,
389 const OutputDevice& rOutDev );
390
391 bool DrawTransformedBitmap(
392 const basegfx::B2DPoint& rNull,
393 const basegfx::B2DPoint& rX,
394 const basegfx::B2DPoint& rY,
395 const SalBitmap& rSourceBitmap,
396 const SalBitmap* pAlphaBitmap,
397 double fAlpha,
398 const OutputDevice& rOutDev );
399
400 bool HasFastDrawTransformedBitmap() const;
401
402 bool DrawAlphaRect(
404 tools::Long nWidth, tools::Long nHeight,
405 sal_uInt8 nTransparency,
406 const OutputDevice& rOutDev );
407
408 virtual OUString getRenderBackendName() const;
409
411
412 // Backends like the svp/gtk ones use cairo and hidpi scale at the surface
413 // but bitmaps aren't hidpi, so if this returns true for the case that the
414 // surface is hidpi then pScaleOut contains the scaling factor. So we can
415 // create larger hires bitmaps which we know will be logically scaled down
416 // by this factor but physically just copied
417 virtual bool ShouldDownscaleIconsAtSurface(double* pScaleOut) const;
418
419
420#if ENABLE_CAIRO_CANVAS
421
423 virtual bool SupportsCairo() const = 0;
425 virtual cairo::SurfaceSharedPtr CreateSurface(const cairo::CairoSurfaceSharedPtr& rSurface) const = 0;
427 virtual cairo::SurfaceSharedPtr CreateSurface(const OutputDevice& rRefDevice, int x, int y, int width, int height) const = 0;
429 virtual cairo::SurfaceSharedPtr CreateBitmapSurface(const OutputDevice& rRefDevice, const BitmapSystemData& rData, const Size& rSize) const = 0;
430 virtual css::uno::Any GetNativeSurfaceHandle(cairo::SurfaceSharedPtr& rSurface, const basegfx::B2ISize& rSize) const = 0;
431
432#endif // ENABLE_CAIRO_CANVAS
433
434protected:
435
437
438 virtual bool setClipRegion( const vcl::Region& ) = 0;
439
440 // draw --> LineColor and FillColor and RasterOp and ClipRegion
441 virtual void drawPixel( tools::Long nX, tools::Long nY ) = 0;
442 virtual void drawPixel( tools::Long nX, tools::Long nY, Color nColor ) = 0;
443
444 virtual void drawLine( tools::Long nX1, tools::Long nY1, tools::Long nX2, tools::Long nY2 ) = 0;
445
446 virtual void drawRect( tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight ) = 0;
447
448 virtual void drawPolyLine( sal_uInt32 nPoints, const Point* pPtAry ) = 0;
449
450 virtual void drawPolygon( sal_uInt32 nPoints, const Point* pPtAry ) = 0;
451
452 virtual void drawPolyPolygon( sal_uInt32 nPoly, const sal_uInt32* pPoints, const Point** pPtAry ) = 0;
453
454 virtual bool drawPolyPolygon(
455 const basegfx::B2DHomMatrix& rObjectToDevice,
457 double fTransparency) = 0;
458
459 virtual bool drawPolyLine(
460 const basegfx::B2DHomMatrix& rObjectToDevice,
461 const basegfx::B2DPolygon&,
462 double fTransparency,
463 double fLineWidth,
464 const std::vector< double >* pStroke, // MM01
466 css::drawing::LineCap,
467 double fMiterMinimumAngle,
468 bool bPixelSnapHairline) = 0;
469
470 virtual bool drawPolyLineBezier(
471 sal_uInt32 nPoints,
472 const Point* pPtAry,
473 const PolyFlags* pFlgAry ) = 0;
474
475 virtual bool drawPolygonBezier(
476 sal_uInt32 nPoints,
477 const Point* pPtAry,
478 const PolyFlags* pFlgAry ) = 0;
479
481 sal_uInt32 nPoly,
482 const sal_uInt32* pPoints,
483 const Point* const* pPtAry,
484 const PolyFlags* const* pFlgAry ) = 0;
485
486 virtual bool drawGradient(
487 const tools::PolyPolygon& rPolyPoly,
488 const Gradient& rGradient ) = 0;
489
490 virtual bool implDrawGradient(basegfx::B2DPolyPolygon const & /*rPolyPolygon*/,
491 SalGradient const & /*rGradient*/)
492 {
493 return false;
494 }
495
496 // CopyArea --> No RasterOp, but ClipRegion
497 virtual void copyArea(
498 tools::Long nDestX, tools::Long nDestY,
499 tools::Long nSrcX, tools::Long nSrcY,
500 tools::Long nSrcWidth, tools::Long nSrcHeight,
501 bool bWindowInvalidate ) = 0;
502
503 // CopyBits and DrawBitmap --> RasterOp and ClipRegion
504 // CopyBits() --> pSrcGraphics == NULL, then CopyBits on same Graphics
505 virtual void copyBits( const SalTwoRect& rPosAry, SalGraphics* pSrcGraphics ) = 0;
506
507 virtual void drawBitmap( const SalTwoRect& rPosAry, const SalBitmap& rSalBitmap ) = 0;
508
509 virtual void drawBitmap(
510 const SalTwoRect& rPosAry,
511 const SalBitmap& rSalBitmap,
512 const SalBitmap& rMaskBitmap ) = 0;
513
514 virtual void drawMask(
515 const SalTwoRect& rPosAry,
516 const SalBitmap& rSalBitmap,
517 Color nMaskColor ) = 0;
518
519 virtual std::shared_ptr<SalBitmap> getBitmap( tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight ) = 0;
520
521 virtual Color getPixel( tools::Long nX, tools::Long nY ) = 0;
522
523 // invert --> ClipRegion (only Windows or VirDevs)
524 virtual void invert(
526 tools::Long nWidth, tools::Long nHeight,
527 SalInvert nFlags) = 0;
528
529 virtual void invert( sal_uInt32 nPoints, const Point* pPtAry, SalInvert nFlags ) = 0;
530
531 virtual bool drawEPS(
533 tools::Long nWidth, tools::Long nHeight,
534 void* pPtr,
535 sal_uInt32 nSize ) = 0;
536
538 virtual bool blendBitmap(
539 const SalTwoRect&,
540 const SalBitmap& rBitmap ) = 0;
541
543 virtual bool blendAlphaBitmap(
544 const SalTwoRect&,
545 const SalBitmap& rSrcBitmap,
546 const SalBitmap& rMaskBitmap,
547 const SalBitmap& rAlphaBitmap ) = 0;
548
561 virtual bool drawAlphaBitmap(
562 const SalTwoRect&,
563 const SalBitmap& rSourceBitmap,
564 const SalBitmap& rAlphaBitmap ) = 0;
565
570 virtual bool drawTransformedBitmap(
571 const basegfx::B2DPoint& rNull,
572 const basegfx::B2DPoint& rX,
573 const basegfx::B2DPoint& rY,
574 const SalBitmap& rSourceBitmap,
575 const SalBitmap* pAlphaBitmap,
576 double fAlpha) = 0;
577
585 virtual bool hasFastDrawTransformedBitmap() const = 0;
586
597 virtual bool drawAlphaRect(
599 tools::Long nWidth, tools::Long nHeight,
600 sal_uInt8 nTransparency ) = 0;
601
602private:
603 SalLayoutFlags m_nLayout; //< 0: mirroring off, 1: mirror x-axis
604
605 // for buffering the Mirror-Matrix, see ::getMirror
606 enum class MirrorMode
607 {
608 NONE,
609 Antiparallel,
610 AntiparallelBiDi,
611 BiDi
612 };
616
617 MirrorMode GetMirrorMode(const OutputDevice& rOutDev) const;
618
619protected:
621 bool m_bAntiAlias : 1;
622
623 inline tools::Long GetDeviceWidth(const OutputDevice& rOutDev) const;
624
633 virtual inline void handleDamage(const tools::Rectangle& rDamagedRegion);
634
635 // native controls
636 bool initWidgetDrawBackends(bool bForce = false);
637
638 std::unique_ptr<vcl::WidgetDrawInterface> m_pWidgetDraw;
639 vcl::WidgetDrawInterface* forWidget() { return m_pWidgetDraw ? m_pWidgetDraw.get() : this; }
640};
641
643{
644 return forWidget()->isNativeControlSupported(eType, ePart);
645}
646
648{
649 return forWidget()->updateSettings(rSettings);
650}
651
653
654
656{
657public:
658 sal_uInt16 GetBitCount() const override
659 {
660 return GetImpl()->GetBitCount();
661 }
662
664 {
665 return GetImpl()->GetGraphicsWidth();
666 }
667
668 void ResetClipRegion() override
669 {
671 }
672
673 bool setClipRegion( const vcl::Region& i_rClip ) override
674 {
675 return GetImpl()->setClipRegion(i_rClip);
676 }
677
678 void SetLineColor() override
679 {
681 }
682
683 void SetLineColor( Color nColor ) override
684 {
685 GetImpl()->SetLineColor(nColor);
686 }
687
688 void SetFillColor() override
689 {
691 }
692
693 void SetFillColor( Color nColor ) override
694 {
695 GetImpl()->SetFillColor (nColor);
696 }
697
698 void SetROPLineColor(SalROPColor aColor) override
699 {
700 GetImpl()->SetROPLineColor(aColor);
701 }
702
703 void SetROPFillColor( SalROPColor aColor) override
704 {
705 GetImpl()->SetROPFillColor(aColor);
706 }
707
708 void SetXORMode(bool bSet, bool bInvertOnly) override
709 {
710 GetImpl()->SetXORMode(bSet, bInvertOnly);
711 }
712
713 void drawPixel( tools::Long nX, tools::Long nY ) override
714 {
715 GetImpl()->drawPixel(nX, nY);
716 }
717
718 void drawPixel( tools::Long nX, tools::Long nY, Color nColor ) override
719 {
720 GetImpl()->drawPixel(nX, nY, nColor);
721 }
722
723 void drawLine( tools::Long nX1, tools::Long nY1, tools::Long nX2, tools::Long nY2 ) override
724 {
725 GetImpl()->drawLine(nX1, nY1, nX2, nY2);
726 }
727
728 void drawRect( tools::Long nX, tools::Long nY, tools::Long nDX, tools::Long nDY ) override
729 {
730 GetImpl()->drawRect(nX, nY, nDX, nDY);
731 }
732
733 void drawPolyLine( sal_uInt32 nPoints, const Point *pPtAry ) override
734 {
735 GetImpl()->drawPolyLine(nPoints, pPtAry);
736 }
737
738 void drawPolygon( sal_uInt32 nPoints, const Point* pPtAry ) override
739 {
740 GetImpl()->drawPolygon(nPoints, pPtAry);
741 }
742
743 void drawPolyPolygon(sal_uInt32 nPoly, const sal_uInt32* pPoints, const Point** pPtAry) override
744 {
745 GetImpl()->drawPolyPolygon (nPoly, pPoints, pPtAry);
746 }
747
749 const basegfx::B2DHomMatrix& rObjectToDevice,
750 const basegfx::B2DPolyPolygon& rPolyPolygon,
751 double fTransparency) override
752 {
753 return GetImpl()->drawPolyPolygon(rObjectToDevice, rPolyPolygon, fTransparency);
754 }
755
757 const basegfx::B2DHomMatrix& rObjectToDevice,
758 const basegfx::B2DPolygon& rPolygon,
759 double fTransparency,
760 double fLineWidth,
761 const std::vector< double >* pStroke,
763 css::drawing::LineCap eLineCap,
764 double fMiterMinimumAngle,
765 bool bPixelSnapHairline) override
766 {
767 return GetImpl()->drawPolyLine(rObjectToDevice, rPolygon, fTransparency, fLineWidth, pStroke, eJoin, eLineCap, fMiterMinimumAngle, bPixelSnapHairline);
768 }
769
770 bool drawPolyLineBezier( sal_uInt32 nPoints, const Point* pPtAry, const PolyFlags* pFlgAry ) override
771 {
772 return GetImpl()->drawPolyLineBezier(nPoints, pPtAry, pFlgAry);
773 }
774
775 bool drawPolygonBezier( sal_uInt32 nPoints, const Point* pPtAry, const PolyFlags* pFlgAry ) override
776 {
777 return GetImpl()->drawPolygonBezier(nPoints, pPtAry, pFlgAry);
778 }
779
780 bool drawPolyPolygonBezier( sal_uInt32 nPoly,
781 const sal_uInt32* pPoints,
782 const Point* const* pPtAry,
783 const PolyFlags* const* pFlgAry) override
784 {
785 return GetImpl()->drawPolyPolygonBezier(nPoly, pPoints, pPtAry, pFlgAry);
786 }
787
789 SalInvert nFlags) override
790 {
791 GetImpl()->invert(nX, nY, nWidth, nHeight, nFlags);
792 }
793
794 void invert(sal_uInt32 nPoints, const Point* pPtAry, SalInvert nFlags) override
795 {
796 GetImpl()->invert(nPoints, pPtAry, nFlags);
797 }
798
800 tools::Long nHeight, void* pPtr, sal_uInt32 nSize) override
801 {
802 return GetImpl()->drawEPS(nX, nY, nWidth, nHeight, pPtr, nSize);
803 }
804
805 void copyBits(const SalTwoRect& rPosAry, SalGraphics* pSrcGraphics) override
806 {
807 GetImpl()->copyBits(rPosAry, pSrcGraphics);
808 }
809
810 void copyArea (tools::Long nDestX, tools::Long nDestY, tools::Long nSrcX,
811 tools::Long nSrcY, tools::Long nSrcWidth, tools::Long nSrcHeight,
812 bool bWindowInvalidate) override
813 {
814 GetImpl()->copyArea(nDestX, nDestY, nSrcX, nSrcY, nSrcWidth, nSrcHeight, bWindowInvalidate);
815 }
816
817 void drawBitmap(const SalTwoRect& rPosAry, const SalBitmap& rSalBitmap) override
818 {
819 GetImpl()->drawBitmap(rPosAry, rSalBitmap);
820 }
821
822 void drawBitmap(const SalTwoRect& rPosAry, const SalBitmap& rSalBitmap, const SalBitmap& rMaskBitmap) override
823 {
824 GetImpl()->drawBitmap(rPosAry, rSalBitmap, rMaskBitmap);
825 }
826
827 void drawMask(const SalTwoRect& rPosAry, const SalBitmap& rSalBitmap, Color nMaskColor) override
828 {
829 GetImpl()->drawMask(rPosAry, rSalBitmap, nMaskColor);
830 }
831
832 std::shared_ptr<SalBitmap> getBitmap(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight) override
833 {
834 return GetImpl()->getBitmap(nX, nY, nWidth, nHeight);
835 }
836
838 {
839 return GetImpl()->getPixel(nX, nY);
840 }
841
842 bool blendBitmap(const SalTwoRect& rPosAry, const SalBitmap& rBitmap) override
843 {
844 return GetImpl()->blendBitmap(rPosAry, rBitmap);
845 }
846
847 bool blendAlphaBitmap(const SalTwoRect& rPosAry, const SalBitmap& rSourceBitmap,
848 const SalBitmap& rMaskBitmap, const SalBitmap& rAlphaBitmap) override
849 {
850 return GetImpl()->blendAlphaBitmap(rPosAry, rSourceBitmap, rMaskBitmap, rAlphaBitmap);
851 }
852
853 bool drawAlphaBitmap(const SalTwoRect& rPosAry, const SalBitmap& rSourceBitmap,
854 const SalBitmap& rAlphaBitmap) override
855 {
856 return GetImpl()->drawAlphaBitmap(rPosAry, rSourceBitmap, rAlphaBitmap);
857 }
858
860 const basegfx::B2DPoint& rX,
861 const basegfx::B2DPoint& rY,
862 const SalBitmap& rSourceBitmap,
863 const SalBitmap* pAlphaBitmap, double fAlpha) override
864 {
865 return GetImpl()->drawTransformedBitmap(rNull, rX, rY, rSourceBitmap, pAlphaBitmap, fAlpha);
866 }
867
868 bool hasFastDrawTransformedBitmap() const override
869 {
871 }
872
874 tools::Long nHeight, sal_uInt8 nTransparency) override
875 {
876 return GetImpl()->drawAlphaRect(nX, nY, nWidth, nHeight, nTransparency);
877 }
878
879 bool drawGradient(const tools::PolyPolygon& rPolygon, const Gradient& rGradient) override
880 {
881 return GetImpl()->drawGradient(rPolygon, rGradient);
882 }
883
885 SalGradient const& rGradient) override
886 {
887 return GetImpl()->implDrawGradient(rPolyPolygon, rGradient);
888 }
889
890 bool supportsOperation(OutDevSupportType eType) const override
891 {
893 }
894
895 OUString getRenderBackendName() const override
896 {
897 return GetImpl()->getRenderBackendName();
898 }
899};
900
901/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SalLayoutFlags
ControlType
These types are all based on the supported variants vcl/salnativewidgets.hxx and must be kept in-sync...
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
Definition: outdev.hxx:171
bool drawPolyLine(const basegfx::B2DHomMatrix &rObjectToDevice, const basegfx::B2DPolygon &rPolygon, double fTransparency, double fLineWidth, const std::vector< double > *pStroke, basegfx::B2DLineJoin eJoin, css::drawing::LineCap eLineCap, double fMiterMinimumAngle, bool bPixelSnapHairline) override
Definition: salgdi.hxx:756
bool blendBitmap(const SalTwoRect &rPosAry, const SalBitmap &rBitmap) override
Blend the bitmap with the current buffer.
Definition: salgdi.hxx:842
bool drawAlphaBitmap(const SalTwoRect &rPosAry, const SalBitmap &rSourceBitmap, const SalBitmap &rAlphaBitmap) override
Render bitmap with alpha channel.
Definition: salgdi.hxx:853
bool drawPolyPolygonBezier(sal_uInt32 nPoly, const sal_uInt32 *pPoints, const Point *const *pPtAry, const PolyFlags *const *pFlgAry) override
Definition: salgdi.hxx:780
void drawPolygon(sal_uInt32 nPoints, const Point *pPtAry) override
Definition: salgdi.hxx:738
void SetLineColor() override
Definition: salgdi.hxx:678
void drawBitmap(const SalTwoRect &rPosAry, const SalBitmap &rSalBitmap) override
Definition: salgdi.hxx:817
bool supportsOperation(OutDevSupportType eType) const override
Definition: salgdi.hxx:890
void drawMask(const SalTwoRect &rPosAry, const SalBitmap &rSalBitmap, Color nMaskColor) override
Definition: salgdi.hxx:827
bool drawPolygonBezier(sal_uInt32 nPoints, const Point *pPtAry, const PolyFlags *pFlgAry) override
Definition: salgdi.hxx:775
void drawLine(tools::Long nX1, tools::Long nY1, tools::Long nX2, tools::Long nY2) override
Definition: salgdi.hxx:723
void drawPolyPolygon(sal_uInt32 nPoly, const sal_uInt32 *pPoints, const Point **pPtAry) override
Definition: salgdi.hxx:743
bool drawEPS(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight, void *pPtr, sal_uInt32 nSize) override
Definition: salgdi.hxx:799
bool drawGradient(const tools::PolyPolygon &rPolygon, const Gradient &rGradient) override
Definition: salgdi.hxx:879
void SetLineColor(Color nColor) override
Definition: salgdi.hxx:683
bool drawAlphaRect(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight, sal_uInt8 nTransparency) override
Render solid rectangle with given transparency.
Definition: salgdi.hxx:873
OUString getRenderBackendName() const override
Definition: salgdi.hxx:895
void drawBitmap(const SalTwoRect &rPosAry, const SalBitmap &rSalBitmap, const SalBitmap &rMaskBitmap) override
Definition: salgdi.hxx:822
bool drawPolyLineBezier(sal_uInt32 nPoints, const Point *pPtAry, const PolyFlags *pFlgAry) override
Definition: salgdi.hxx:770
void copyArea(tools::Long nDestX, tools::Long nDestY, tools::Long nSrcX, tools::Long nSrcY, tools::Long nSrcWidth, tools::Long nSrcHeight, bool bWindowInvalidate) override
Definition: salgdi.hxx:810
void drawPixel(tools::Long nX, tools::Long nY) override
Definition: salgdi.hxx:713
void SetROPFillColor(SalROPColor aColor) override
Definition: salgdi.hxx:703
void SetFillColor() override
Definition: salgdi.hxx:688
void copyBits(const SalTwoRect &rPosAry, SalGraphics *pSrcGraphics) override
Definition: salgdi.hxx:805
std::shared_ptr< SalBitmap > getBitmap(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight) override
Definition: salgdi.hxx:832
bool drawPolyPolygon(const basegfx::B2DHomMatrix &rObjectToDevice, const basegfx::B2DPolyPolygon &rPolyPolygon, double fTransparency) override
Definition: salgdi.hxx:748
Color getPixel(tools::Long nX, tools::Long nY) override
Definition: salgdi.hxx:837
bool implDrawGradient(basegfx::B2DPolyPolygon const &rPolyPolygon, SalGradient const &rGradient) override
Definition: salgdi.hxx:884
bool setClipRegion(const vcl::Region &i_rClip) override
Definition: salgdi.hxx:673
void SetROPLineColor(SalROPColor aColor) override
Definition: salgdi.hxx:698
sal_uInt16 GetBitCount() const override
Definition: salgdi.hxx:658
void invert(sal_uInt32 nPoints, const Point *pPtAry, SalInvert nFlags) override
Definition: salgdi.hxx:794
void SetXORMode(bool bSet, bool bInvertOnly) override
Definition: salgdi.hxx:708
void SetFillColor(Color nColor) override
Definition: salgdi.hxx:693
void invert(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight, SalInvert nFlags) override
Definition: salgdi.hxx:788
bool blendAlphaBitmap(const SalTwoRect &rPosAry, const SalBitmap &rSourceBitmap, const SalBitmap &rMaskBitmap, const SalBitmap &rAlphaBitmap) override
Draw the bitmap by blending using the mask and alpha channel.
Definition: salgdi.hxx:847
void drawPixel(tools::Long nX, tools::Long nY, Color nColor) override
Definition: salgdi.hxx:718
tools::Long GetGraphicsWidth() const override
Definition: salgdi.hxx:663
void ResetClipRegion() override
Definition: salgdi.hxx:668
bool drawTransformedBitmap(const basegfx::B2DPoint &rNull, const basegfx::B2DPoint &rX, const basegfx::B2DPoint &rY, const SalBitmap &rSourceBitmap, const SalBitmap *pAlphaBitmap, double fAlpha) override
draw transformed bitmap (maybe with alpha) where Null, X, Y define the coordinate system
Definition: salgdi.hxx:859
void drawPolyLine(sal_uInt32 nPoints, const Point *pPtAry) override
Definition: salgdi.hxx:733
void drawRect(tools::Long nX, tools::Long nY, tools::Long nDX, tools::Long nDY) override
Definition: salgdi.hxx:728
bool hasFastDrawTransformedBitmap() const override
Returns true if the drawTransformedBitmap() call is fast, and so it should be used directly without t...
Definition: salgdi.hxx:868
Implementation class for SalGraphics.
Definition: salgdiimpl.hxx:51
virtual void drawMask(const SalTwoRect &rPosAry, const SalBitmap &rSalBitmap, Color nMaskColor)=0
virtual void ResetClipRegion()=0
virtual bool supportsOperation(OutDevSupportType eType) const =0
virtual bool drawAlphaBitmap(const SalTwoRect &, const SalBitmap &rSourceBitmap, const SalBitmap &rAlphaBitmap)=0
virtual void invert(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight, SalInvert nFlags)=0
virtual void drawPolyLine(sal_uInt32 nPoints, const Point *pPtAry)=0
virtual void drawLine(tools::Long nX1, tools::Long nY1, tools::Long nX2, tools::Long nY2)=0
virtual void drawPixel(tools::Long nX, tools::Long nY)=0
virtual void copyBits(const SalTwoRect &rPosAry, SalGraphics *pSrcGraphics)=0
virtual void drawRect(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight)=0
virtual void copyArea(tools::Long nDestX, tools::Long nDestY, tools::Long nSrcX, tools::Long nSrcY, tools::Long nSrcWidth, tools::Long nSrcHeight, bool bWindowInvalidate)=0
virtual bool blendAlphaBitmap(const SalTwoRect &, const SalBitmap &rSrcBitmap, const SalBitmap &rMaskBitmap, const SalBitmap &rAlphaBitmap)=0
virtual bool drawTransformedBitmap(const basegfx::B2DPoint &rNull, const basegfx::B2DPoint &rX, const basegfx::B2DPoint &rY, const SalBitmap &rSourceBitmap, const SalBitmap *pAlphaBitmap, double fAlpha)=0
virtual bool setClipRegion(const vcl::Region &)=0
virtual void SetROPLineColor(SalROPColor nROPColor)=0
virtual void SetFillColor()=0
virtual void SetXORMode(bool bSet, bool bInvertOnly)=0
virtual std::shared_ptr< SalBitmap > getBitmap(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight)=0
virtual bool drawPolyPolygonBezier(sal_uInt32 nPoly, const sal_uInt32 *pPoints, const Point *const *pPtAry, const PolyFlags *const *pFlgAry)=0
virtual bool drawGradient(const tools::PolyPolygon &rPolygon, const Gradient &rGradient)=0
virtual void SetLineColor()=0
virtual Color getPixel(tools::Long nX, tools::Long nY)=0
virtual tools::Long GetGraphicsWidth() const =0
virtual bool drawPolygonBezier(sal_uInt32 nPoints, const Point *pPtAry, const PolyFlags *pFlgAry)=0
virtual bool implDrawGradient(basegfx::B2DPolyPolygon const &rPolyPolygon, SalGradient const &rGradient)=0
virtual void drawBitmap(const SalTwoRect &rPosAry, const SalBitmap &rSalBitmap)=0
virtual bool drawEPS(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight, void *pPtr, sal_uInt32 nSize)=0
virtual void SetROPFillColor(SalROPColor nROPColor)=0
virtual bool blendBitmap(const SalTwoRect &, const SalBitmap &rBitmap)=0
virtual void drawPolygon(sal_uInt32 nPoints, const Point *pPtAry)=0
virtual OUString getRenderBackendName() const =0
virtual bool hasFastDrawTransformedBitmap() const =0
virtual bool drawAlphaRect(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight, sal_uInt8 nTransparency)=0
virtual sal_uInt16 GetBitCount() const =0
virtual bool drawPolyLineBezier(sal_uInt32 nPoints, const Point *pPtAry, const PolyFlags *pFlgAry)=0
virtual void drawPolyPolygon(sal_uInt32 nPoly, const sal_uInt32 *pPoints, const Point **pPtAry)=0
virtual void FreeEmbedFontData(const void *pData, tools::Long nDataLen)=0
virtual const void * GetEmbedFontData(const vcl::font::PhysicalFontFace *pFont, tools::Long *pDataLen)=0
virtual void copyBits(const SalTwoRect &rPosAry, SalGraphics *pSrcGraphics)=0
virtual void invert(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight, SalInvert nFlags)=0
virtual bool drawEPS(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight, void *pPtr, sal_uInt32 nSize)=0
void SetLayout(SalLayoutFlags aLayout)
Definition: salgdi.hxx:180
virtual void drawPixel(tools::Long nX, tools::Long nY)=0
virtual void SetROPLineColor(SalROPColor nROPColor)=0
virtual bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const =0
virtual void drawPixel(tools::Long nX, tools::Long nY, Color nColor)=0
virtual void SetTextColor(Color nColor)=0
virtual void GetFontMetric(ImplFontMetricDataRef &, int nFallbackLevel)=0
virtual void drawPolyPolygon(sal_uInt32 nPoly, const sal_uInt32 *pPoints, const Point **pPtAry)=0
virtual void SetXORMode(bool bSet, bool bInvertOnly)=0
virtual SystemGraphicsData GetGraphicsData() const =0
virtual FontCharMapRef GetFontCharMap() const =0
SalLayoutFlags GetLayout() const
Definition: salgdi.hxx:179
virtual void drawRect(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight)=0
virtual bool setClipRegion(const vcl::Region &)=0
virtual void handleDamage(const tools::Rectangle &rDamagedRegion)
Handle damage done by drawing with a widget draw override.
Definition: salgdi.hxx:652
virtual Color getPixel(tools::Long nX, tools::Long nY)=0
virtual bool drawPolyPolygonBezier(sal_uInt32 nPoly, const sal_uInt32 *pPoints, const Point *const *pPtAry, const PolyFlags *const *pFlgAry)=0
virtual void ClearDevFontCache()=0
bool getAntiAlias() const
Definition: salgdi.hxx:92
virtual void GetResolution(sal_Int32 &rDPIX, sal_Int32 &rDPIY)=0
void setAntiAlias(bool bNew)
Definition: salgdi.hxx:83
virtual void SetLineColor()=0
virtual void SetFillColor()=0
vcl::WidgetDrawInterface * forWidget()
Definition: salgdi.hxx:639
virtual bool AddTempDevFont(vcl::font::PhysicalFontCollection *, const OUString &rFileURL, const OUString &rFontName)=0
virtual bool hasFastDrawTransformedBitmap() const =0
Returns true if the drawTransformedBitmap() call is fast, and so it should be used directly without t...
virtual SalGraphicsImpl * GetImpl() const =0
virtual void drawPolygon(sal_uInt32 nPoints, const Point *pPtAry)=0
virtual tools::Long GetGraphicsWidth() const =0
std::unique_ptr< vcl::WidgetDrawInterface > m_pWidgetDraw
Definition: salgdi.hxx:638
virtual std::shared_ptr< SalBitmap > getBitmap(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight)=0
virtual bool supportsOperation(OutDevSupportType) const =0
virtual void drawPolyLine(sal_uInt32 nPoints, const Point *pPtAry)=0
virtual void DrawTextLayout(const GenericSalLayout &)=0
virtual bool drawPolyLine(const basegfx::B2DHomMatrix &rObjectToDevice, const basegfx::B2DPolygon &, double fTransparency, double fLineWidth, const std::vector< double > *pStroke, basegfx::B2DLineJoin, css::drawing::LineCap, double fMiterMinimumAngle, bool bPixelSnapHairline)=0
bool UpdateSettings(AllSettings &)
Definition: salgdi.hxx:647
virtual void drawBitmap(const SalTwoRect &rPosAry, const SalBitmap &rSalBitmap)=0
virtual void GetDevFontList(vcl::font::PhysicalFontCollection *)=0
virtual bool drawAlphaRect(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight, sal_uInt8 nTransparency)=0
Render solid rectangle with given transparency.
virtual void drawMask(const SalTwoRect &rPosAry, const SalBitmap &rSalBitmap, Color nMaskColor)=0
virtual bool blendBitmap(const SalTwoRect &, const SalBitmap &rBitmap)=0
Blend the bitmap with the current buffer.
virtual std::unique_ptr< GenericSalLayout > GetTextLayout(int nFallbackLevel)=0
virtual void SetFillColor(Color nColor)=0
bool IsNativeControlSupported(ControlType, ControlPart)
Definition: salgdi.hxx:642
virtual void drawBitmap(const SalTwoRect &rPosAry, const SalBitmap &rSalBitmap, const SalBitmap &rMaskBitmap)=0
basegfx::B2DHomMatrix m_aLastMirror
Definition: salgdi.hxx:615
virtual void SetFont(LogicalFontInstance *, int nFallbackLevel)=0
virtual void invert(sal_uInt32 nPoints, const Point *pPtAry, SalInvert nFlags)=0
bool m_bAntiAlias
flags which hold the SetAntialiasing() value from OutputDevice
Definition: salgdi.hxx:621
virtual bool drawPolyPolygon(const basegfx::B2DHomMatrix &rObjectToDevice, const basegfx::B2DPolyPolygon &, double fTransparency)=0
virtual void drawLine(tools::Long nX1, tools::Long nY1, tools::Long nX2, tools::Long nY2)=0
virtual bool drawPolyLineBezier(sal_uInt32 nPoints, const Point *pPtAry, const PolyFlags *pFlgAry)=0
virtual void ResetClipRegion()=0
virtual void SetLineColor(Color nColor)=0
MirrorMode m_eLastMirrorMode
Definition: salgdi.hxx:613
virtual bool drawPolygonBezier(sal_uInt32 nPoints, const Point *pPtAry, const PolyFlags *pFlgAry)=0
virtual sal_uInt16 GetBitCount() const =0
tools::Long m_nLastMirrorTranslation
Definition: salgdi.hxx:614
virtual void SetROPFillColor(SalROPColor nROPColor)=0
virtual bool drawAlphaBitmap(const SalTwoRect &, const SalBitmap &rSourceBitmap, const SalBitmap &rAlphaBitmap)=0
Render bitmap with alpha channel.
virtual bool implDrawGradient(basegfx::B2DPolyPolygon const &, SalGradient const &)
Definition: salgdi.hxx:490
virtual bool blendAlphaBitmap(const SalTwoRect &, const SalBitmap &rSrcBitmap, const SalBitmap &rMaskBitmap, const SalBitmap &rAlphaBitmap)=0
Draw the bitmap by blending using the mask and alpha channel.
void ReleaseFonts()
Definition: salgdi.hxx:141
virtual bool drawGradient(const tools::PolyPolygon &rPolyPoly, const Gradient &rGradient)=0
SalLayoutFlags m_nLayout
Definition: salgdi.hxx:603
virtual void copyArea(tools::Long nDestX, tools::Long nDestY, tools::Long nSrcX, tools::Long nSrcY, tools::Long nSrcWidth, tools::Long nSrcHeight, bool bWindowInvalidate)=0
virtual bool updateSettings(AllSettings &rSettings)
virtual bool isNativeControlSupported(ControlType eType, ControlPart ePart)
Query the platform layer for native control support.
abstract base class for physical font faces
#define VCL_DLLPUBLIC
Definition: dllapi.h:29
#define VCL_PLUGIN_PUBLIC
Definition: dllapi.h:40
DocumentType eType
NONE
std::shared_ptr< Surface > SurfaceSharedPtr
Definition: cairo.hxx:36
std::shared_ptr< cairo_surface_t > CairoSurfaceSharedPtr
Definition: cairo.hxx:34
long Long
A PhysicalFontFaceCollection is created by a PhysicalFontCollection and becomes invalid when original...
PolyFlags
sal_Unicode sal_Ucs
Definition: salgdi.hxx:64
SalROPColor
Definition: salgtype.hxx:70
SalInvert
Definition: salgtype.hxx:74
Return value of GetTTGlobalFontInfo()
Definition: sft.hxx:150
unsigned char sal_uInt8
sal_uInt16 sal_Unicode
OutDevSupportType
Definition: vclenum.hxx:174