64#include <com/sun/star/drawing/LineCap.hpp>
65#include <com/sun/star/uno/Reference.h>
66#include <com/sun/star/awt/DeviceInfo.hpp>
99class OutDevStateStack;
106 struct FontCapabilities;
108 class WindowOutputDevice;
111 class PhysicalFontCollection;
112 class PhysicalFontFaceCollection;
116 class ImplLayoutArgs;
117 class TextLayoutCache;
140 class XBreakIterator;
193 mutable css::uno::WeakReference< css::rendering::XCanvas >
mxCanvas;
271 virtual void dispose()
override;
291 OUString GetRenderBackendName()
const;
303 css::uno::Any GetSystemGfxDataAny()
const;
306 void SetRefPoint(
const Point& rRefPoint );
312 virtual sal_uInt16 GetBitCount()
const;
315 {
return Size( mnOutWidth, mnOutHeight ); }
323 {
return Point( mnOutOffX, mnOutOffY ); }
330 css::uno::Reference< css::awt::XGraphics >
333 std::vector< VCLXGraphics* > *CreateUnoGraphicsList();
338 css::uno::Reference< css::rendering::XCanvas > GetCanvas()
const;
340 css::uno::Reference< css::rendering::XSpriteCanvas > GetSpriteCanvas()
const;
385 SAL_DLLPRIVATE sal_Int32
GetDPIX()
const {
return mnDPIX; }
391 SAL_DLLPRIVATE sal_Int32
GetDPIY()
const {
return mnDPIY; }
393 SAL_DLLPRIVATE
void SetDPIX( sal_Int32 nDPIX ) { mnDPIX = nDPIX; }
394 SAL_DLLPRIVATE
void SetDPIY( sal_Int32 nDPIY ) { mnDPIY = nDPIY; }
398 return mnDPIScalePercentage / 100.0f;
403 return mnDPIScalePercentage;
407 virtual bool IsVirtual()
const;
431 virtual void DrawOutDev(
432 const Point& rDestPt,
const Size& rDestSize,
433 const Point& rSrcPt,
const Size& rSrcSize );
435 virtual void DrawOutDev(
436 const Point& rDestPt,
const Size& rDestSize,
437 const Point& rSrcPt,
const Size& rSrcSize,
440 virtual void CopyArea(
441 const Point& rDestPt,
442 const Point& rSrcPt,
const Size& rSrcSize,
443 bool bWindowInvalidate =
false );
447 virtual void CopyDeviceArea(
SalTwoRect& aPosAry,
bool bWindowInvalidate);
457 SAL_DLLPRIVATE
bool is_double_buffered_window()
const;
459 virtual css::uno::Reference< css::rendering::XCanvas > ImplGetCanvas(
bool bSpriteCanvas )
const;
460 SAL_DLLPRIVATE
void ImplDisposeCanvas();
479 void EnableOutput(
bool bEnable =
true );
495 void SetRasterOp(
RasterOp eRasterOp );
514 void SetFillColor(
const Color& rColor );
521 const Point& rPos,
const Size& rSize,
const Size& rBackgroundSize)
const;
525 virtual Color GetReadableFontColor(
const Color& rFontColor,
const Color& rBgColor)
const;
533 virtual void ImplReleaseFonts();
537 SAL_DLLPRIVATE
void InitLineColor();
539 SAL_DLLPRIVATE
void InitFillColor();
551 void SetClipRegion();
559 void IntersectClipRegion(
const vcl::Region& rRegion );
562 virtual vcl::Region GetOutputBoundsClipRegion()
const;
566 virtual void InitClipRegion();
579 SAL_DLLPRIVATE
void SetDeviceClipRegion(
const vcl::Region* pRegion );
592 void DrawPixel(
const Point& rPt );
593 void DrawPixel(
const Point& rPt,
const Color& rColor );
614 Color aStart = COL_WHITE,
615 Color aEnd = COL_BLACK);
641 virtual void DrawHatchLine_DrawLine(
const Point& rStartPoint,
const Point& rEndPoint);
669 double fLineWidth = 0.0,
671 css::drawing::LineCap eLineCap = css::drawing::LineCap_BUTT,
689 bool DrawPolyLineDirect(
692 double fLineWidth = 0.0,
693 double fTransparency = 0.0,
694 const std::vector< double >* =
nullptr,
696 css::drawing::LineCap eLineCap = css::drawing::LineCap_BUTT,
708 bool DrawPolyLineDirectInternal(
711 double fLineWidth = 0.0,
712 double fTransparency = 0.0,
713 const std::vector< double >* =
nullptr,
715 css::drawing::LineCap eLineCap = css::drawing::LineCap_BUTT,
754 SAL_DLLPRIVATE
void ImplDrawPolyPolygon( sal_uInt16 nPoly,
const tools::PolyPolygon& rPolyPoly );
807 SAL_DLLPRIVATE
Color GetSingleColorGradientFill();
820 const ::Hatch& rHatch,
865 sal_Int32 nIndex = 0, sal_Int32 nLen = -1,
866 std::vector< tools::Rectangle >* pVector =
nullptr, OUString* pDisplayText =
nullptr,
871 std::vector< tools::Rectangle >* pVector =
nullptr, OUString* pDisplayText =
nullptr,
876 std::vector< tools::Rectangle >* pVector, OUString* pDisplayText,
vcl::ITextLayout& _rLayout );
880 void ImplDrawTextBackground(
const SalLayout& );
882 void DrawCtrlText(
const Point& rPos,
const OUString& rStr,
883 sal_Int32 nIndex = 0, sal_Int32 nLen = -1,
891 bool bUnderlineAbove =
false );
898 FontLineStyle eOverline,
bool bWordLine,
bool bUnderlineAbove );
959 const OUString& rStr, sal_Int32 nBase = 0, sal_Int32 nIndex = 0, sal_Int32 nLen = -1,
967 const OUString& rStr )
const;
970 const OUString& rStr, sal_Int32 nBase = 0, sal_Int32 nIndex = 0,
976 const OUString& rStr, sal_Int32 nBase, sal_Int32 nIndex = 0,
982 OUString GetEllipsisString(
const OUString& rStr,
tools::Long nMaxWidth,
985 tools::Long GetCtrlTextWidth(
const OUString& rStr,
997 const OUString& rOrigStr,
1038 void DrawTextArray(
const Point& rStartPt,
const OUString& rStr,
1046 sal_Int32 nIndex = 0, sal_Int32 nLen = -1,
bool bCaret =
false,
1050 void GetCaretPositions(
const OUString&,
KernArray& rCaretXArray,
1051 sal_Int32 nIndex, sal_Int32 nLen,
1053 void DrawStretchText(
const Point& rStartPt, sal_Int32 nWidth,
1054 const OUString& rStr,
1055 sal_Int32 nIndex = 0, sal_Int32 nLen = -1);
1056 sal_Int32 GetTextBreak(
const OUString& rStr,
tools::Long nTextWidth,
1057 sal_Int32 nIndex, sal_Int32 nLen = -1,
1061 sal_Int32 GetTextBreak(
const OUString& rStr,
tools::Long nTextWidth,
1063 sal_Int32 nIndex, sal_Int32 nLen,
1067 static std::shared_ptr<const vcl::text::TextLayoutCache> CreateTextLayoutCache(OUString
const&);
1069 SAL_DLLPRIVATE
SalLayoutFlags GetBiDiLayoutFlags( std::u16string_view rStr,
1070 const sal_Int32 nMinIndex,
1071 const sal_Int32 nEndIndex )
const;
1074 SAL_DLLPRIVATE
void ImplInitTextLineSize();
1075 SAL_DLLPRIVATE
void ImplInitAboveTextLineSize();
1079 SAL_DLLPRIVATE sal_Int32 ImplBreakLinesWithIterator(
const tools::Long nWidth,
const OUString& rStr,
const vcl::ITextLayout& _rLayout,
1080 const css::uno::Reference<css::linguistic2::XHyphenator>& xHyph,
1081 const css::uno::Reference<css::i18n::XBreakIterator>& xBI,
1082 const bool bHyphenate,
1083 const sal_Int32 nPos, sal_Int32 nBreakPos);
1085 SAL_DLLPRIVATE sal_Int32 ImplBreakLinesSimple(
const tools::Long nWidth,
const OUString& rStr,
1089 virtual bool shouldDrawWavePixelAsRect(
tools::Long nLineWidth)
const;
1090 virtual void SetWaveLineColors(
Color const& rColor,
tools::Long nLineWidth);
1094 SAL_DLLPRIVATE
void ImplInitTextColor();
1096 SAL_DLLPRIVATE
void ImplDrawTextDirect(
SalLayout&,
bool bTextLines);
1097 SAL_DLLPRIVATE
void ImplDrawSpecialText(
SalLayout& );
1120 FontMetric GetFontMetricFromCollection(
int nDevFontIndex )
const;
1121 int GetFontFaceCollectionCount()
const;
1123 bool IsFontAvailable( std::u16string_view rFontName )
const;
1125 bool AddTempDevFont(
const OUString& rFileURL,
const OUString& rFontName );
1126 void RefreshFontData(
const bool bNewFontLists );
1134 bool GetFontFeatures(std::vector<vcl::font::Feature>& rFontFeatures)
const;
1136 bool GetGlyphBoundRects(
const Point& rOrigin,
const OUString& rStr,
int nIndex,
1137 int nLen, std::vector< tools::Rectangle >& rVector )
const;
1139 sal_Int32 HasGlyphs(
const vcl::Font& rFont, std::u16string_view rStr,
1140 sal_Int32 nIndex = 0, sal_Int32 nLen = -1 )
const;
1147 sal_Int32 ValidateKashidas(
const OUString& rTxt, sal_Int32 nIdx, sal_Int32 nLen,
1148 sal_Int32 nKashCount,
1149 const sal_Int32* pKashidaPos,
1150 sal_Int32* pKashidaPosDropped
1153 static void BeginFontSubstitution();
1154 static void EndFontSubstitution();
1155 static void AddFontSubstitute(
const OUString& rFontName,
1156 const OUString& rReplaceFontName,
1158 static void RemoveFontsSubstitute();
1165 SAL_DLLPRIVATE
void ImplInitFontList()
const;
1166 SAL_DLLPRIVATE
void ImplUpdateFontData();
1170 static void ImplClearAllFontData(
bool bNewFontLists );
1173 static void ImplRefreshAllFontData(
bool bNewFontLists );
1176 SAL_DLLPRIVATE
static void ImplUpdateAllFontData(
bool bNewFontLists );
1184 SAL_DLLPRIVATE
bool InitFont()
const;
1188 virtual void ImplClearFontData(
bool bNewFontLists);
1189 virtual void ImplRefreshFontData(
bool bNewFontLists);
1190 void ReleaseFontCache();
1191 void ReleaseFontCollection();
1192 void SetFontCollectionFromSVData();
1193 void ResetNewFontCache();
1195 virtual bool ImplNewFont()
const;
1201 SAL_DLLPRIVATE
static void ImplUpdateFontDataForAllFrames( FontUpdateHandler_t pHdl,
bool bNewFontLists );
1204 SAL_DLLPRIVATE OUString ImplGetEllipsisString(
const OutputDevice& rTargetDevice,
const OUString& rStr,
1208 SAL_DLLPRIVATE
void ImplDrawEmphasisMarks(
SalLayout& );
1219 SAL_DLLPRIVATE
bool ImplIsAntiparallel()
const ;
1220 SAL_DLLPRIVATE
void ReMirror(
Point &rPoint )
const;
1222 SAL_DLLPRIVATE
void ReMirror(
vcl::Region &rRegion )
const;
1223 SAL_DLLPRIVATE
bool ImplIsRecordLayout()
const;
1224 virtual bool HasMirroredGraphics()
const;
1225 std::unique_ptr<SalLayout>
1226 ImplLayout(
const OUString&, sal_Int32 nIndex, sal_Int32 nLen,
1234 SAL_DLLPRIVATE
vcl::text::ImplLayoutArgs ImplPrepareLayoutArgs( OUString&,
const sal_Int32 nIndex,
const sal_Int32 nLen,
1238 SAL_DLLPRIVATE std::unique_ptr<SalLayout>
1239 ImplGlyphFallbackLayout( std::unique_ptr<SalLayout>,
1242 SAL_DLLPRIVATE std::unique_ptr<SalLayout>
1264 static void StartTrackingFontMappingUse();
1268 virtual void EnableRTL(
bool bEnable =
true);
1271 bool GetTextIsRTL(
const OUString&, sal_Int32 nIndex, sal_Int32 nLen )
const;
1282 const Point& rDestPt,
1286 const Point& rDestPt,
1287 const Size& rDestSize,
1291 const Point& rDestPt,
1292 const Size& rDestSize,
1293 const Point& rSrcPtPixel,
1294 const Size& rSrcSizePixel,
1298 const Point& rDestPt,
1299 const Size& rDestSize,
1300 const Point& rSrcPtPixel,
1301 const Size& rSrcSizePixel,
1306 const Point& rDestPt,
1311 const Point& rDestPt,
1312 const Size& rDestSize,
1316 const Point& rDestPt,
1317 const Size& rDestSize,
1318 const Point& rSrcPtPixel,
1319 const Size& rSrcSizePixel,
1323 const Point& rDestPt,
1324 const Size& rDestSize,
1325 const Point& rSrcPtPixel,
1326 const Size& rSrcSizePixel,
1339 const Image& rImage,
1345 const Image& rImage,
1349 virtual Bitmap GetBitmap(
const Point& rSrcPt,
const Size& rSize )
const;
1369 void DrawTransformedBitmapEx(
1372 double fAlpha = 1.0);
1378 bool HasFastDrawTransformedBitmap()
const;
1382 virtual void DrawDeviceBitmapEx(
1383 const Point& rDestPt,
const Size& rDestSize,
1384 const Point& rSrcPtPixel,
const Size& rSrcSizePixel,
1396 virtual bool DrawTransformBitmapExDirect(
1399 double fAlpha = 1.0);
1412 virtual bool TransformAndReduceBitmapExToTargetRange(
1415 double &fMaximumArea);
1419 SAL_DLLPRIVATE
void DrawDeviceAlphaBitmap(
1422 const Point& rDestPt,
1423 const Size& rDestSize,
1424 const Point& rSrcPtPixel,
1425 const Size& rSrcSizePixel );
1427 SAL_DLLPRIVATE
void DrawDeviceAlphaBitmapSlowPath(
1430 Size const & aOutSz,
Point const & aOutPt);
1433 SAL_DLLPRIVATE
void BlendBitmap(
1437 SAL_DLLPRIVATE
Bitmap BlendBitmap(
1441 const sal_Int32 nOffY,
1442 const sal_Int32 nDstHeight,
1443 const sal_Int32 nOffX,
1444 const sal_Int32 nDstWidth,
1449 const sal_Int32* pMapX,
1450 const sal_Int32* pMapY );
1452 SAL_DLLPRIVATE
Bitmap BlendBitmapWithAlpha(
1457 const sal_Int32 nOffY,
1458 const sal_Int32 nDstHeight,
1459 const sal_Int32 nOffX,
1460 const sal_Int32 nDstWidth,
1461 const sal_Int32* pMapX,
1462 const sal_Int32* pMapY );
1483 bool RemoveTransparenciesFromMetaFile(
1486 bool bReduceTransparency,
1487 bool bTransparencyAutoMode,
1488 bool bDownsampleBitmaps,
1489 const Color& rBackground = COL_TRANSPARENT );
1491 void DrawTransparent(
const tools::PolyPolygon& rPolyPoly, sal_uInt16 nTransparencePercent );
1493 void DrawTransparent(
1496 double fTransparency);
1498 void DrawTransparent(
1500 const Gradient& rTransparenceGradient );
1504 virtual void EmulateDrawTransparent(
const tools::PolyPolygon& rPolyPoly, sal_uInt16 nTransparencePercent );
1510 SAL_DLLPRIVATE
bool DrawTransparentNatively(
const tools::PolyPolygon& rPolyPoly, sal_uInt16 nTransparencePercent );
1520 void DrawMask(
const Point& rDestPt,
1523 void DrawMask(
const Point& rDestPt,
const Size& rDestSize,
1526 void DrawMask(
const Point& rDestPt,
const Size& rDestSize,
1527 const Point& rSrcPtPixel,
const Size& rSrcSizePixel,
1530 void DrawMask(
const Point& rDestPt,
const Size& rDestSize,
1531 const Point& rSrcPtPixel,
const Size& rSrcSizePixel,
1537 virtual void DrawDeviceMask (
1539 const Point& rDestPt,
const Size& rDestSize,
1540 const Point& rSrcPtPixel,
const Size& rSrcSizePixel );
1550 void EnableMapMode(
bool bEnable =
true );
1554 void SetMapMode(
const MapMode& rNewMapMode );
1555 void SetRelativeMapMode(
const MapMode& rNewMapMode );
1556 virtual void SetMetafileMapMode(
const MapMode& rNewMapMode,
bool bIsRecord);
1560 virtual void ImplInitMapModeObjects();
1593 void SetPixelOffset(
const Size& rOffset );
1613 const MapMode& rMapMode)
const;
1615 const MapMode& rMapMode)
const;
1617 const MapMode& rMapMode)
const;
1629 const MapMode& rMapMode)
const;
1631 const MapMode& rMapMode)
const;
1633 const MapMode& rMapMode)
const;
1635 const MapMode& rMapMode)
const;
1638 const MapMode* pMapModeSource,
1639 const MapMode* pMapModeDest)
const;
1641 const MapMode* pMapModeSource,
1642 const MapMode* pMapModeDest)
const;
1644 const MapMode* pMapModeSource,
1645 const MapMode* pMapModeDest)
const;
1647 const MapMode& rMapModeSource,
1650 const MapMode& rMapModeSource,
1653 const MapMode& rMapModeSource,
1660 const MapMode& rMapModeSource,
1682 SAL_DLLPRIVATE
Point ImplLogicToDevicePixel(
const Point& rLogicPt )
const;
1696 SAL_DLLPRIVATE
double ImplLogicWidthToDeviceSubPixel(
tools::Long nWidth)
const;
1709 SAL_DLLPRIVATE
double ImplLogicHeightToDeviceSubPixel(
tools::Long nHeight)
const;
1741 SAL_DLLPRIVATE
Size ImplLogicToDevicePixel(
const Size& rLogicSize )
const;
1781 SAL_DLLPRIVATE
LineInfo ImplLogicToDevicePixel(
const LineInfo& rLineInfo )
const;
1795 SAL_DLLPRIVATE
void ImplInvalidateViewTransform();
1848 bool HitTestNativeScrollbar(
1852 bool& rIsInside )
const;
1856 bool DrawNativeControl(
1862 const OUString& aCaption,
1863 const Color& rBackgroundColor = COL_AUTO );
1867 bool GetNativeControlRegion(
1894 virtual css::awt::DeviceInfo GetDeviceInfo()
const;
1900 css::awt::DeviceInfo GetCommonDeviceInfo(
Size const& aDevSize)
const;
bool IsTransparent() const
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
tools::Long mnEmphasisAscent
std::vector< VCLXGraphics * > * GetUnoGraphicsList() const
Size GetOutputSize() const
SAL_DLLPRIVATE sal_Int32 GetDPIX() const
Get the output device's DPI x-axis value.
OutputDevice(const OutputDevice &)=delete
Point GetOutputOffPixel() const
std::vector< FontMappingUseItem > FontMappingUseData
GDIMetaFile * GetConnectMetaFile() const
tools::Rectangle GetOutputRectPixel() const
tools::Long GetOutOffYPixel() const
const vcl::Font & GetFont() const
bool IsOverlineColor() const
virtual void ReleaseGraphics(bool bRelease=true)=0
Release the graphics device, and remove it from the graphics device list.
tools::Long mnOutOffY
Output offset for device output in pixel (pseudo window offset within window system's frames)
SAL_WARN_UNUSED_RESULT Size GetPixelOffset() const
Get the offset in pixel.
tools::Long GetOutputWidthPixel() const
float GetDPIScaleFactor() const
virtual bool CanEnableNativeWidget() const
Determine if native widgets can be enabled.
OutputDevice & operator=(const OutputDevice &)=delete
RasterOp GetRasterOp() const
std::shared_ptr< ImplFontCache > mxFontCache
SAL_DLLPRIVATE sal_Int32 GetDPIY() const
Get the output device's DPI y-axis value.
css::uno::WeakReference< css::rendering::XCanvas > mxCanvas
virtual bool AcquireGraphics() const =0
Acquire a graphics device that the output device uses to draw on.
tools::Long mnOutOffX
Output offset for device output in pixel (pseudo window offset within window system's frames)
tools::Long mnOutOffLogicX
Additional output offset in logical coordinates, applied in PixelToLogic (used by SetPixelOffset/GetP...
Size GetOutputSizePixel() const
std::unique_ptr< ImplOutDevData > mpOutDevData
std::shared_ptr< vcl::font::PhysicalFontCollection > mxFontCollection
OutDevViewType meOutDevViewType
const Wallpaper & GetBackground() const
const Point & GetRefPoint() const
bool SupportsCairo() const
vcl::ExtOutDevData * GetExtOutDevData() const
tools::Long GetOutputHeightPixel() const
bool IsClipRegion() const
vcl::text::ComplexTextLayoutFlags mnTextLayoutMode
SAL_DLLPRIVATE tools::Long GetEmphasisDescent() const
void SetExtOutDevData(vcl::ExtOutDevData *pExtOutDevData)
SAL_DLLPRIVATE void SetDPIY(sal_Int32 nDPIY)
const Color & GetOverlineColor() const
tools::Long mnEmphasisDescent
virtual bool IsScreenComp() const
SalGraphics * mpGraphics
Graphics context to draw on.
VclPtr< OutputDevice > mpNextGraphics
Next output device in list.
OutDevViewType GetOutDevViewType() const
cairo::SurfaceSharedPtr CreateBitmapSurface(const BitmapSystemData &rData, const Size &rSize) const
Create Surface for given bitmap data.
virtual bool UsePolyPolygonForComplexGradient()=0
rtl::Reference< LogicalFontInstance > mpFontInstance
LanguageType meTextLanguage
bool IsRTLEnabled() const
vcl::text::ComplexTextLayoutFlags GetLayoutMode() const
std::vector< vcl::State > maOutDevStateStack
virtual Size GetButtonBorderSize()
AntialiasingFlags mnAntialiasing
virtual bool CanSubsampleBitmap() const
sal_Int32 GetDPIScalePercentage() const
virtual size_t GetSyncCount() const
TextAlign GetTextAlign() const
bool IsTextFillColor() const
cairo::SurfaceSharedPtr CreateSurface(const cairo::CairoSurfaceSharedPtr &rSurface) const
Create Surface from given cairo surface.
const Color & GetLineColor() const
bool IsDeviceOutputNecessary() const
SAL_DLLPRIVATE void DrawOutDev(const Point &, const Size &, const Point &, const Size &, const Printer &)=delete
tools::Long mnOutOffOrigX
Additional output pixel offset, applied in LogicToPixel (used by SetPixelOffset/GetPixelOffset)
VclPtr< VirtualDevice > mpAlphaVDev
const MapMode & GetMapMode() const
sal_Int32 mnDPIScalePercentage
For HiDPI displays, we want to draw elements for a percentage larger.
const Color & GetTextColor() const
SAL_DLLPRIVATE tools::Long GetEmphasisAscent() const
bool IsBackground() const
SAL_DLLPRIVATE::basegfx::B2DPolygon ImplLogicToDevicePixel(const ::basegfx::B2DPolygon &rLogicPoly) const
Convert a logical B2DPolygon to a B2DPolygon in physical device pixel units.
tools::Long mnOutOffOrigY
Additional output pixel offset, applied in LogicToPixel (used by SetPixelOffset/GetPixelOffset)
std::unique_ptr< vcl::font::PhysicalFontFaceCollection > mpFontFaceCollection
bool IsOutputEnabled() const
AntialiasingFlags GetAntialiasing() const
css::uno::Any GetNativeSurfaceHandle(cairo::SurfaceSharedPtr &rSurface, const basegfx::B2ISize &rSize) const
Return native handle for underlying surface.
tools::Long mnTextOffX
font specific text alignment offsets in pixel units
std::optional< AllSettings > moSettings
OutDevType GetOutDevType() const
void SetOutDevViewType(OutDevViewType eOutDevViewType)
If this OutputDevice is used for displaying a Print Preview the OutDevViewType should be set to 'OutD...
tools::Long mnOutOffLogicY
Additional output offset in logical coordinates, applied in PixelToLogic (used by SetPixelOffset/GetP...
tools::Long GetOutOffXPixel() const
std::vector< VCLXGraphics * > * mpUnoGraphicsList
SAL_DLLPRIVATE void SetDPIX(sal_Int32 nDPIX)
DrawModeFlags GetDrawMode() const
virtual Color GetMonochromeButtonColor()
bool IsTextLineColor() const
const AllSettings & GetSettings() const
vcl::ExtOutDevData * mpExtOutDevData
LanguageType GetDigitLanguage() const
const Color & GetTextLineColor() const
virtual vcl::Window * GetOwnerWindow() const
Get the vcl::Window that this OutputDevice belongs to, if any.
VclPtr< OutputDevice > mpPrevGraphics
Previous output device in list.
cairo::SurfaceSharedPtr CreateSurface(int x, int y, int width, int height) const
Create surface with given dimensions.
bool IsMapModeEnabled() const
const Color & GetFillColor() const
const OutDevType meOutDevType
bool IsTransparent() const
TextAlign GetAlignment() const
tools::Rectangle GetTextRect(const tools::Rectangle &rRect, const OUString &rStr, DrawTextFlags nStyle=DrawTextFlags::WordBreak, TextRectInfo *pInfo=nullptr, const vcl::ITextLayout *_pTextLayout=nullptr) const
tools::Long GetTextWidth(const OUString &rStr, sal_Int32 nIndex=0, sal_Int32 nLen=-1, vcl::text::TextLayoutCache const *=nullptr, SalLayoutGlyphs const *const pLayoutCache=nullptr) const
Width of the text.
void SetFont(const vcl::Font &rNewFont)
float approximate_digit_width() const
tools::Long GetTextHeight() const
Height where any character of the current font fits; in logic coordinates.
Color GetBackgroundColor() const
void SetTextAlign(TextAlign eAlign)
SAL_DLLPRIVATE float approximate_char_width() const
void SetSettings(const AllSettings &rSettings)
Point PixelToLogic(const Point &rDevicePt) const
Size GetOutputSizePixel() const
Color GetTextFillColor() const
void SetTextColor(const Color &rColor)
constexpr ::Color COL_WHITE(0xFF, 0xFF, 0xFF)
void drawLine(VirtualDevice *dev, Point const &orig, Point const &dest, Size const &pSize)
draws a line from orig to dest knowing penSize
::std::vector< B2DPolyPolygon > B2DPolyPolygonVector
constexpr double deg2rad(double v)
std::shared_ptr< Surface > SurfaceSharedPtr
std::shared_ptr< cairo_surface_t > CairoSurfaceSharedPtr
void SetLineColor(const css::uno::Reference< css::beans::XPropertySet > &xGridProperties, sal_Int32 nColor)
BitmapEx GetBitmapEx(BitmapEx const &rBitmapEx, DrawModeFlags nDrawMode)
OutputDevice RenderContext
BmpMirrorFlags AdjustTwoRect(SalTwoRect &rTwoRect, const Size &rSizePix)
VCL_DLLPUBLIC void InvertFocusRect(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect)
tools::SvRef< FontCharMap > FontCharMapRef
std::vector< tools::PolyPolygon > PolyPolyVector
uno::Sequence< double > maFillColor
std::vector< OUString > mUsedFonts
#define SAL_WARN_UNUSED_RESULT
void ImplHandleResize(vcl::Window *pWindow, tools::Long nNewWidth, tools::Long nNewHeight)