diff options
author | Chris Sherlock <chris.sherlock79@gmail.com> | 2014-10-15 19:47:01 +1100 |
---|---|---|
committer | Chris Sherlock <chris.sherlock79@gmail.com> | 2014-10-15 20:58:11 +1100 |
commit | d7a0916e68238d619d74cbab72e66980e24d2f48 (patch) | |
tree | d37ceb8b82a74bf9db161adbc0770493d5be7765 /vcl/inc/salgdi.hxx | |
parent | 0d6f45377592a62ff4ee510d5fbd3bdd9e20160a (diff) |
vcl: cleanup salgdi.hxx
Change-Id: Iced928a97afdc30e8cb1e24dd148c8b838e8eb72
Diffstat (limited to 'vcl/inc/salgdi.hxx')
-rw-r--r-- | vcl/inc/salgdi.hxx | 637 |
1 files changed, 367 insertions, 270 deletions
diff --git a/vcl/inc/salgdi.hxx b/vcl/inc/salgdi.hxx index b49f9ecd1083..7e06ee6d82e7 100644 --- a/vcl/inc/salgdi.hxx +++ b/vcl/inc/salgdi.hxx @@ -78,173 +78,78 @@ typedef std::vector< sal_Int32 > Int32Vector; class VCL_PLUGIN_PUBLIC SalGraphics { - int m_nLayout; // 0: mirroring off, 1: mirror x-axis - -protected: - /// bitfield - // flags which hold the SetAntialiasing() value from OutputDevice - bool m_bAntiAliasB2DDraw : 1; - public: - void setAntiAliasB2DDraw(bool bNew) { m_bAntiAliasB2DDraw = bNew; } - bool getAntiAliasB2DDraw() const { return m_bAntiAliasB2DDraw; } - - SalGraphics(); - virtual ~SalGraphics(); - -protected: - virtual bool setClipRegion( const vcl::Region& ) = 0; - - // draw --> LineColor and FillColor and RasterOp and ClipRegion - virtual void drawPixel( long nX, long nY ) = 0; - virtual void drawPixel( long nX, long nY, SalColor nSalColor ) = 0; - virtual void drawLine( long nX1, long nY1, long nX2, long nY2 ) = 0; - virtual void drawRect( long nX, long nY, long nWidth, long nHeight ) = 0; - virtual void drawPolyLine( sal_uInt32 nPoints, const SalPoint* pPtAry ) = 0; - virtual void drawPolygon( sal_uInt32 nPoints, const SalPoint* pPtAry ) = 0; - virtual void drawPolyPolygon( sal_uInt32 nPoly, const sal_uInt32* pPoints, PCONSTSALPOINT* pPtAry ) = 0; - virtual bool drawPolyPolygon( const ::basegfx::B2DPolyPolygon&, double fTransparency ) = 0; - virtual bool drawPolyLine( const ::basegfx::B2DPolygon&, - double fTransparency, - const ::basegfx::B2DVector& rLineWidths, - basegfx::B2DLineJoin, - com::sun::star::drawing::LineCap) = 0; - virtual bool drawPolyLineBezier( sal_uInt32 nPoints, const SalPoint* pPtAry, const sal_uInt8* pFlgAry ) = 0; - virtual bool drawPolygonBezier( sal_uInt32 nPoints, const SalPoint* pPtAry, const sal_uInt8* pFlgAry ) = 0; - virtual bool drawPolyPolygonBezier( sal_uInt32 nPoly, const sal_uInt32* pPoints, const SalPoint* const* pPtAry, const sal_uInt8* const* pFlgAry ) = 0; - - // CopyArea --> No RasterOp, but ClipRegion - virtual void copyArea( long nDestX, long nDestY, long nSrcX, long nSrcY, long nSrcWidth, - long nSrcHeight, sal_uInt16 nFlags ) = 0; - - // CopyBits and DrawBitmap --> RasterOp and ClipRegion - // CopyBits() --> pSrcGraphics == NULL, then CopyBits on same Graphics - virtual void copyBits( const SalTwoRect& rPosAry, SalGraphics* pSrcGraphics ) = 0; - virtual void drawBitmap( const SalTwoRect& rPosAry, const SalBitmap& rSalBitmap ) = 0; - virtual void drawBitmap( const SalTwoRect& rPosAry, - const SalBitmap& rSalBitmap, - SalColor nTransparentColor ) = 0; - virtual void drawBitmap( const SalTwoRect& rPosAry, - const SalBitmap& rSalBitmap, - const SalBitmap& rMaskBitmap ) = 0; - virtual void drawMask( const SalTwoRect& rPosAry, - const SalBitmap& rSalBitmap, - SalColor nMaskColor ) = 0; - - virtual SalBitmap* getBitmap( long nX, long nY, long nWidth, long nHeight ) = 0; - virtual SalColor getPixel( long nX, long nY ) = 0; - - // invert --> ClipRegion (only Windows or VirDevs) - virtual void invert( long nX, long nY, long nWidth, long nHeight, SalInvert nFlags) = 0; - virtual void invert( sal_uInt32 nPoints, const SalPoint* pPtAry, SalInvert nFlags ) = 0; + SalGraphics(); + virtual ~SalGraphics(); - virtual bool drawEPS( long nX, long nY, long nWidth, long nHeight, void* pPtr, sal_uLong nSize ) = 0; - - // native widget rendering methods that require mirroring - virtual bool hitTestNativeControl( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion, - const Point& aPos, bool& rIsInside ); - virtual bool drawNativeControl( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion, - ControlState nState, const ImplControlValue& aValue, - const OUString& aCaption ); - virtual bool getNativeControlRegion( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion, ControlState nState, - const ImplControlValue& aValue, const OUString& aCaption, - Rectangle &rNativeBoundingRegion, Rectangle &rNativeContentRegion ); - - /** Render bitmap with alpha channel - - @param rSourceBitmap - Source bitmap to blit - - @param rAlphaBitmap - Alpha channel to use for blitting - - @return true, if the operation succeeded, and false - otherwise. In this case, clients should try to emulate alpha - compositing themselves - */ - virtual bool drawAlphaBitmap( const SalTwoRect&, - const SalBitmap& rSourceBitmap, - const SalBitmap& rAlphaBitmap ) = 0; - - /** draw transformed bitmap (maybe with alpha) where Null, X, Y define the coordinate system */ - virtual bool drawTransformedBitmap( - const basegfx::B2DPoint& rNull, - const basegfx::B2DPoint& rX, - const basegfx::B2DPoint& rY, - const SalBitmap& rSourceBitmap, - const SalBitmap* pAlphaBitmap) = 0; - - /** Render solid rectangle with given transparency + void setAntiAliasB2DDraw(bool bNew) { m_bAntiAliasB2DDraw = bNew; } + bool getAntiAliasB2DDraw() const { return m_bAntiAliasB2DDraw; } - @param nTransparency - Transparency value (0-255) to use. 0 blits and opaque, 255 a - fully transparent rectangle - */ - virtual bool drawAlphaRect( long nX, long nY, long nWidth, long nHeight, sal_uInt8 nTransparency ) = 0; - -public: // public SalGraphics methods, the interface to the independent vcl part // get device resolution - virtual void GetResolution( sal_Int32& rDPIX, sal_Int32& rDPIY ) = 0; + virtual void GetResolution( sal_Int32& rDPIX, sal_Int32& rDPIY ) = 0; // get the depth of the device - virtual sal_uInt16 GetBitCount() const = 0; + virtual sal_uInt16 GetBitCount() const = 0; // get the width of the device - virtual long GetGraphicsWidth() const = 0; + virtual long GetGraphicsWidth() const = 0; // set the clip region to empty - virtual void ResetClipRegion() = 0; + virtual void ResetClipRegion() = 0; // set the line color to transparent (= don't draw lines) - virtual void SetLineColor() = 0; + virtual void SetLineColor() = 0; // set the line color to a specific color - virtual void SetLineColor( SalColor nSalColor ) = 0; + virtual void SetLineColor( SalColor nSalColor ) = 0; // set the fill color to transparent (= don't fill) - virtual void SetFillColor() = 0; + virtual void SetFillColor() = 0; // set the fill color to a specific color, shapes will be // filled accordingly - virtual void SetFillColor( SalColor nSalColor ) = 0; + virtual void SetFillColor( SalColor nSalColor ) = 0; // enable/disable XOR drawing - virtual void SetXORMode( bool bSet, bool bInvertOnly ) = 0; + virtual void SetXORMode( bool bSet, bool bInvertOnly ) = 0; // set line color for raster operations - virtual void SetROPLineColor( SalROPColor nROPColor ) = 0; + virtual void SetROPLineColor( SalROPColor nROPColor ) = 0; // set fill color for raster operations - virtual void SetROPFillColor( SalROPColor nROPColor ) = 0; + virtual void SetROPFillColor( SalROPColor nROPColor ) = 0; // set the text color to a specific color - virtual void SetTextColor( SalColor nSalColor ) = 0; + virtual void SetTextColor( SalColor nSalColor ) = 0; // set the font - virtual sal_uInt16 SetFont( FontSelectPattern*, int nFallbackLevel ) = 0; + virtual sal_uInt16 SetFont( FontSelectPattern*, int nFallbackLevel ) = 0; // release the fonts - void ReleaseFonts() { SetFont( NULL, 0 ); } + void ReleaseFonts() { SetFont( NULL, 0 ); } // get the current font's metrics - virtual void GetFontMetric( ImplFontMetricData*, int nFallbackLevel = 0 ) = 0; + virtual void GetFontMetric( ImplFontMetricData*, int nFallbackLevel = 0 ) = 0; // get the repertoire of the current font virtual const FontCharMapPtr GetFontCharMap() const = 0; // get the layout capabilities of the current font - virtual bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const = 0; + virtual bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const = 0; // graphics must fill supplied font list - virtual void GetDevFontList( PhysicalFontCollection* ) = 0; + virtual void GetDevFontList( PhysicalFontCollection* ) = 0; // graphics must drop any cached font info - virtual void ClearDevFontCache() = 0; + virtual void ClearDevFontCache() = 0; - virtual bool AddTempDevFont( PhysicalFontCollection*, const OUString& rFileURL, const OUString& rFontName ) = 0; + virtual bool AddTempDevFont( + PhysicalFontCollection*, + const OUString& rFileURL, + const OUString& rFontName ) = 0; // CreateFontSubset: a method to get a subset of glyhps of a font // inside a new valid font file @@ -258,13 +163,14 @@ public: // rInfo: additional outgoing information // implementation note: encoding 0 with glyph id 0 should be added implicitly // as "undefined character" - virtual bool CreateFontSubset( const OUString& rToFile, - const PhysicalFontFace* pFont, - sal_GlyphId* pGlyphIDs, - sal_uInt8* pEncoding, - sal_Int32* pWidths, - int nGlyphs, - FontSubsetInfo& rInfo ) = 0; + virtual bool CreateFontSubset( + const OUString& rToFile, + const PhysicalFontFace* pFont, + sal_GlyphId* pGlyphIDs, + sal_uInt8* pEncoding, + sal_Int32* pWidths, + int nGlyphs, + FontSubsetInfo& rInfo ) = 0; // GetFontEncodingVector: a method to get the encoding map Unicode // to font encoded character; this is only used for type1 fonts and @@ -273,8 +179,9 @@ public: // glyphs with only a name) exist it is set to the corresponding // map for non encoded glyphs; the encoding vector contains -1 // as encoding for these cases - virtual const Ucs2SIntMap* - GetFontEncodingVector( const PhysicalFontFace*, const Ucs2OStrMap** ppNonEncoded ) = 0; + virtual const Ucs2SIntMap* GetFontEncodingVector( + const PhysicalFontFace*, + const Ucs2OStrMap** ppNonEncoded ) = 0; // GetEmbedFontData: gets the font data for a font marked // embeddable by GetDevFontList or NULL in case of error @@ -285,187 +192,377 @@ public: // pWidths MUST support at least 256 members; // rInfo: additional outgoing information // pDataLen: out parameter, contains the byte length of the returned buffer - virtual const void* GetEmbedFontData( const PhysicalFontFace* pFont, - const sal_Ucs* pUnicodes, - sal_Int32* pWidths, - FontSubsetInfo& rInfo, - long* pDataLen ) = 0; + virtual const void* GetEmbedFontData( + const PhysicalFontFace* pFont, + const sal_Ucs* pUnicodes, + sal_Int32* pWidths, + FontSubsetInfo& rInfo, + long* pDataLen ) = 0; + // free the font data again - virtual void FreeEmbedFontData( const void* pData, long nDataLen ) = 0; + virtual void FreeEmbedFontData( const void* pData, long nDataLen ) = 0; // get the same widths as in CreateFontSubset and GetEmbedFontData // in case of an embeddable font also fill the mapping // between unicode and glyph id // leave widths vector and mapping untouched in case of failure - virtual void GetGlyphWidths( const PhysicalFontFace* pFont, - bool bVertical, - Int32Vector& rWidths, - Ucs2UIntMap& rUnicodeEnc ) = 0; + virtual void GetGlyphWidths( + const PhysicalFontFace* pFont, + bool bVertical, + Int32Vector& rWidths, + Ucs2UIntMap& rUnicodeEnc ) = 0; - virtual bool GetGlyphBoundRect( sal_GlyphId, Rectangle& ) = 0; - virtual bool GetGlyphOutline( sal_GlyphId, basegfx::B2DPolyPolygon& ) = 0; + virtual bool GetGlyphBoundRect( sal_GlyphId, Rectangle& ) = 0; + virtual bool GetGlyphOutline( sal_GlyphId, basegfx::B2DPolyPolygon& ) = 0; - virtual SalLayout* GetTextLayout( ImplLayoutArgs&, int nFallbackLevel ) = 0; - virtual void DrawServerFontLayout( const ServerFontLayout& ) = 0; + virtual SalLayout* GetTextLayout( ImplLayoutArgs&, int nFallbackLevel ) = 0; + virtual void DrawServerFontLayout( const ServerFontLayout& ) = 0; - virtual bool supportsOperation( OutDevSupportType ) const = 0; + virtual bool supportsOperation( OutDevSupportType ) const = 0; // mirroring specifica - int GetLayout() { return m_nLayout; } - void SetLayout( int aLayout ) { m_nLayout = aLayout;} - - void mirror( long& nX, const OutputDevice *pOutDev, bool bBack = false ) const; - void mirror( long& nX, long& nWidth, const OutputDevice *pOutDev, bool bBack = false ) const; - bool mirror( sal_uInt32 nPoints, const SalPoint *pPtAry, SalPoint *pPtAry2, const OutputDevice *pOutDev, bool bBack = false ) const; - void mirror( Rectangle& rRect, const OutputDevice*, bool bBack = false ) const; - void mirror( vcl::Region& rRgn, const OutputDevice *pOutDev, bool bBack = false ) const; - void mirror( ImplControlValue&, const OutputDevice*, bool bBack = false ) const; - basegfx::B2DPoint mirror( const basegfx::B2DPoint& i_rPoint, const OutputDevice *pOutDev, bool bBack = false ) const; - basegfx::B2DPolygon mirror( const basegfx::B2DPolygon& i_rPoly, const OutputDevice *pOutDev, bool bBack = false ) const; - basegfx::B2DPolyPolygon mirror( const basegfx::B2DPolyPolygon& i_rPoly, const OutputDevice *pOutDev, bool bBack = false ) const; + int GetLayout() { return m_nLayout; } + void SetLayout( int aLayout ) { m_nLayout = aLayout;} + + void mirror( long& nX, const OutputDevice *pOutDev, bool bBack = false ) const; + void mirror( long& nX, long& nWidth, const OutputDevice *pOutDev, bool bBack = false ) const; + bool mirror( sal_uInt32 nPoints, const SalPoint *pPtAry, SalPoint *pPtAry2, const OutputDevice *pOutDev, bool bBack = false ) const; + void mirror( Rectangle& rRect, const OutputDevice*, bool bBack = false ) const; + void mirror( vcl::Region& rRgn, const OutputDevice *pOutDev, bool bBack = false ) const; + void mirror( ImplControlValue&, const OutputDevice*, bool bBack = false ) const; + basegfx::B2DPoint mirror( const basegfx::B2DPoint& i_rPoint, const OutputDevice *pOutDev, bool bBack = false ) const; + basegfx::B2DPolygon mirror( const basegfx::B2DPolygon& i_rPoly, const OutputDevice *pOutDev, bool bBack = false ) const; + basegfx::B2DPolyPolygon mirror( const basegfx::B2DPolyPolygon& i_rPoly, const OutputDevice *pOutDev, bool bBack = false ) const; // non virtual methods; these do possible coordinate mirroring and // then delegate to protected virtual methods - bool SetClipRegion( const vcl::Region&, const OutputDevice *pOutDev ); + bool SetClipRegion( const vcl::Region&, const OutputDevice *pOutDev ); // draw --> LineColor and FillColor and RasterOp and ClipRegion - void DrawPixel( long nX, long nY, const OutputDevice *pOutDev ); - void DrawPixel( long nX, long nY, SalColor nSalColor, const OutputDevice *pOutDev ); - void DrawLine( long nX1, long nY1, long nX2, long nY2, const OutputDevice *pOutDev ); - void DrawRect( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev ); - void DrawPolyLine( sal_uInt32 nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev ); - void DrawPolygon( sal_uInt32 nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev ); - void DrawPolyPolygon( sal_uInt32 nPoly, - const sal_uInt32* pPoints, - PCONSTSALPOINT* pPtAry, - const OutputDevice *pOutDev ); - bool DrawPolyPolygon( const basegfx::B2DPolyPolygon &i_rPolyPolygon, - double i_fTransparency, - const OutputDevice *i_pOutDev); - bool DrawPolyLine( const basegfx::B2DPolygon& i_rPolygon, - double i_fTransparency, - const basegfx::B2DVector& i_rLineWidth, - basegfx::B2DLineJoin i_eLineJoin, - com::sun::star::drawing::LineCap i_eLineCap, - const OutputDevice* i_pOutDev); - - bool DrawPolyLineBezier( sal_uInt32 nPoints, - const SalPoint* pPtAry, - const sal_uInt8* pFlgAry, - const OutputDevice *pOutDev ); - bool DrawPolygonBezier( sal_uInt32 nPoints, - const SalPoint* pPtAry, - const sal_uInt8* pFlgAry, - const OutputDevice *pOutDev ); - bool DrawPolyPolygonBezier( sal_uInt32 nPoly, - const sal_uInt32* pPoints, - const SalPoint* const* pPtAry, - const sal_uInt8* const* pFlgAry, - const OutputDevice *pOutDev ); + void DrawPixel( long nX, long nY, const OutputDevice *pOutDev ); + void DrawPixel( long nX, long nY, SalColor nSalColor, const OutputDevice *pOutDev ); + + void DrawLine( long nX1, long nY1, long nX2, long nY2, const OutputDevice *pOutDev ); + + void DrawRect( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev ); + + void DrawPolyLine( sal_uInt32 nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev ); + + void DrawPolygon( sal_uInt32 nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev ); + + void DrawPolyPolygon( + sal_uInt32 nPoly, + const sal_uInt32* pPoints, + PCONSTSALPOINT* pPtAry, + const OutputDevice *pOutDev ); + + bool DrawPolyPolygon( + const basegfx::B2DPolyPolygon &i_rPolyPolygon, + double i_fTransparency, + const OutputDevice *i_pOutDev); + + bool DrawPolyLine( + const basegfx::B2DPolygon& i_rPolygon, + double i_fTransparency, + const basegfx::B2DVector& i_rLineWidth, + basegfx::B2DLineJoin i_eLineJoin, + com::sun::star::drawing::LineCap i_eLineCap, + const OutputDevice* i_pOutDev); + + bool DrawPolyLineBezier( + sal_uInt32 nPoints, + const SalPoint* pPtAry, + const sal_uInt8* pFlgAry, + const OutputDevice *pOutDev ); + + bool DrawPolygonBezier( + sal_uInt32 nPoints, + const SalPoint* pPtAry, + const sal_uInt8* pFlgAry, + const OutputDevice *pOutDev ); + + bool DrawPolyPolygonBezier( + sal_uInt32 nPoly, + const sal_uInt32* pPoints, + const SalPoint* const* pPtAry, + const sal_uInt8* const* pFlgAry, + const OutputDevice *pOutDev ); // CopyArea --> No RasterOp, but ClipRegion - void CopyArea( long nDestX, long nDestY, - long nSrcX, long nSrcY, - long nSrcWidth, long nSrcHeight, - sal_uInt16 nFlags, - const OutputDevice *pOutDev ); + void CopyArea( + long nDestX, long nDestY, + long nSrcX, long nSrcY, + long nSrcWidth, long nSrcHeight, + sal_uInt16 nFlags, + const OutputDevice *pOutDev ); // CopyBits and DrawBitmap --> RasterOp and ClipRegion // CopyBits() --> pSrcGraphics == NULL, then CopyBits on same Graphics - void CopyBits( const SalTwoRect& rPosAry, - SalGraphics* pSrcGraphics, - const OutputDevice *pOutDev, - const OutputDevice *pSrcOutDev ); - void DrawBitmap( const SalTwoRect& rPosAry, - const SalBitmap& rSalBitmap, - const OutputDevice *pOutDev ); - void DrawBitmap( const SalTwoRect& rPosAry, - const SalBitmap& rSalBitmap, - const SalBitmap& rTransparentBitmap, - const OutputDevice *pOutDev ); - - void DrawMask( const SalTwoRect& rPosAry, - const SalBitmap& rSalBitmap, - SalColor nMaskColor, - const OutputDevice *pOutDev ); - - SalBitmap* GetBitmap( long nX, long nY, - long nWidth, long nHeight, - const OutputDevice *pOutDev ); - - SalColor GetPixel( long nX, long nY, - const OutputDevice *pOutDev ); + void CopyBits( + const SalTwoRect& rPosAry, + SalGraphics* pSrcGraphics, + const OutputDevice *pOutDev, + const OutputDevice *pSrcOutDev ); + + void DrawBitmap( + const SalTwoRect& rPosAry, + const SalBitmap& rSalBitmap, + const OutputDevice *pOutDev ); + + void DrawBitmap( + const SalTwoRect& rPosAry, + const SalBitmap& rSalBitmap, + const SalBitmap& rTransparentBitmap, + const OutputDevice *pOutDev ); + + void DrawMask( + const SalTwoRect& rPosAry, + const SalBitmap& rSalBitmap, + SalColor nMaskColor, + const OutputDevice *pOutDev ); + + SalBitmap* GetBitmap( + long nX, long nY, + long nWidth, long nHeight, + const OutputDevice *pOutDev ); + + SalColor GetPixel( + long nX, long nY, + const OutputDevice *pOutDev ); // invert --> ClipRegion (only Windows) - void Invert( long nX, long nY, + void Invert( + long nX, long nY, long nWidth, long nHeight, SalInvert nFlags, const OutputDevice *pOutDev ); - void Invert( sal_uInt32 nPoints, + void Invert( + sal_uInt32 nPoints, const SalPoint* pPtAry, SalInvert nFlags, const OutputDevice *pOutDev ); - bool DrawEPS( long nX, long nY, - long nWidth, long nHeight, - void* pPtr, - sal_uLong nSize, - const OutputDevice *pOutDev ); + bool DrawEPS( + long nX, long nY, + long nWidth, long nHeight, + void* pPtr, + sal_uLong nSize, + const OutputDevice *pOutDev ); // native widget rendering functions // Query the platform layer for control support - virtual bool IsNativeControlSupported( ControlType nType, ControlPart nPart ); + virtual bool IsNativeControlSupported( ControlType nType, ControlPart nPart ); // Query the native control to determine if it was acted upon - bool HitTestNativeControl( ControlType nType, - ControlPart nPart, - const Rectangle& rControlRegion, - const Point& aPos, - bool& rIsInside, - const OutputDevice *pOutDev ); + bool HitTestNativeControl( + ControlType nType, + ControlPart nPart, + const Rectangle& rControlRegion, + const Point& aPos, + bool& rIsInside, + const OutputDevice *pOutDev ); // Request rendering of a particular control and/or part - bool DrawNativeControl( ControlType nType, - ControlPart nPart, - const Rectangle& rControlRegion, - ControlState nState, - const ImplControlValue& aValue, - const OUString& aCaption, - const OutputDevice *pOutDev ); + bool DrawNativeControl( + ControlType nType, + ControlPart nPart, + const Rectangle& rControlRegion, + ControlState nState, + const ImplControlValue& aValue, + const OUString& aCaption, + const OutputDevice *pOutDev ); // Query the native control's actual drawing region (including adornment) - bool GetNativeControlRegion( ControlType nType, - ControlPart nPart, - const Rectangle& rControlRegion, - ControlState nState, - const ImplControlValue& aValue, - const OUString& aCaption, - Rectangle &rNativeBoundingRegion, - Rectangle &rNativeContentRegion, - const OutputDevice *pOutDev ); - - bool DrawAlphaBitmap( const SalTwoRect&, - const SalBitmap& rSourceBitmap, - const SalBitmap& rAlphaBitmap, - const OutputDevice *pOutDev ); - - bool DrawTransformedBitmap( - const basegfx::B2DPoint& rNull, - const basegfx::B2DPoint& rX, - const basegfx::B2DPoint& rY, - const SalBitmap& rSourceBitmap, - const SalBitmap* pAlphaBitmap, - const OutputDevice* pOutDev ); - - bool DrawAlphaRect( long nX, long nY, long nWidth, long nHeight, - sal_uInt8 nTransparency, const OutputDevice *pOutDev ); - - virtual SystemGraphicsData - GetGraphicsData() const = 0; - - virtual SystemFontData GetSysFontData( int nFallbacklevel ) const = 0; + bool GetNativeControlRegion( + ControlType nType, + ControlPart nPart, + const Rectangle& rControlRegion, + ControlState nState, + const ImplControlValue& aValue, + const OUString& aCaption, + Rectangle &rNativeBoundingRegion, + Rectangle &rNativeContentRegion, + const OutputDevice *pOutDev ); + + bool DrawAlphaBitmap( + const SalTwoRect&, + const SalBitmap& rSourceBitmap, + const SalBitmap& rAlphaBitmap, + const OutputDevice *pOutDev ); + + bool DrawTransformedBitmap( + const basegfx::B2DPoint& rNull, + const basegfx::B2DPoint& rX, + const basegfx::B2DPoint& rY, + const SalBitmap& rSourceBitmap, + const SalBitmap* pAlphaBitmap, + const OutputDevice* pOutDev ); + + bool DrawAlphaRect( + long nX, long nY, + long nWidth, long nHeight, + sal_uInt8 nTransparency, + const OutputDevice *pOutDev ); + + virtual SystemGraphicsData GetGraphicsData() const = 0; + + virtual SystemFontData GetSysFontData( int nFallbacklevel ) const = 0; + +protected: + virtual bool setClipRegion( const vcl::Region& ) = 0; + + // draw --> LineColor and FillColor and RasterOp and ClipRegion + virtual void drawPixel( long nX, long nY ) = 0; + virtual void drawPixel( long nX, long nY, SalColor nSalColor ) = 0; + + virtual void drawLine( long nX1, long nY1, long nX2, long nY2 ) = 0; + + virtual void drawRect( long nX, long nY, long nWidth, long nHeight ) = 0; + + virtual void drawPolyLine( sal_uInt32 nPoints, const SalPoint* pPtAry ) = 0; + + virtual void drawPolygon( sal_uInt32 nPoints, const SalPoint* pPtAry ) = 0; + + virtual void drawPolyPolygon( sal_uInt32 nPoly, const sal_uInt32* pPoints, PCONSTSALPOINT* pPtAry ) = 0; + virtual bool drawPolyPolygon( const ::basegfx::B2DPolyPolygon&, double fTransparency ) = 0; + + virtual bool drawPolyLine( + const ::basegfx::B2DPolygon&, + double fTransparency, + const ::basegfx::B2DVector& rLineWidths, + basegfx::B2DLineJoin, + com::sun::star::drawing::LineCap) = 0; + + virtual bool drawPolyLineBezier( + sal_uInt32 nPoints, + const SalPoint* pPtAry, + const sal_uInt8* pFlgAry ) = 0; + + virtual bool drawPolygonBezier( + sal_uInt32 nPoints, + const SalPoint* pPtAry, + const sal_uInt8* pFlgAry ) = 0; + + virtual bool drawPolyPolygonBezier( + sal_uInt32 nPoly, + const sal_uInt32* pPoints, + const SalPoint* const* pPtAry, + const sal_uInt8* const* pFlgAry ) = 0; + + // CopyArea --> No RasterOp, but ClipRegion + virtual void copyArea( + long nDestX, long nDestY, + long nSrcX, long nSrcY, + long nSrcWidth, long nSrcHeight, + sal_uInt16 nFlags ) = 0; + + // CopyBits and DrawBitmap --> RasterOp and ClipRegion + // CopyBits() --> pSrcGraphics == NULL, then CopyBits on same Graphics + virtual void copyBits( const SalTwoRect& rPosAry, SalGraphics* pSrcGraphics ) = 0; + + virtual void drawBitmap( const SalTwoRect& rPosAry, const SalBitmap& rSalBitmap ) = 0; + + virtual void drawBitmap( + const SalTwoRect& rPosAry, + const SalBitmap& rSalBitmap, + SalColor nTransparentColor ) = 0; + + virtual void drawBitmap( + const SalTwoRect& rPosAry, + const SalBitmap& rSalBitmap, + const SalBitmap& rMaskBitmap ) = 0; + + virtual void drawMask( + const SalTwoRect& rPosAry, + const SalBitmap& rSalBitmap, + SalColor nMaskColor ) = 0; + + virtual SalBitmap* getBitmap( long nX, long nY, long nWidth, long nHeight ) = 0; + + virtual SalColor getPixel( long nX, long nY ) = 0; + + // invert --> ClipRegion (only Windows or VirDevs) + virtual void invert( + long nX, long nY, + long nWidth, long nHeight, + SalInvert nFlags) = 0; + + virtual void invert( sal_uInt32 nPoints, const SalPoint* pPtAry, SalInvert nFlags ) = 0; + + virtual bool drawEPS( + long nX, long nY, + long nWidth, long nHeight, + void* pPtr, + sal_uLong nSize ) = 0; + + // native widget rendering methods that require mirroring + virtual bool hitTestNativeControl( + ControlType nType, ControlPart nPart, + const Rectangle& rControlRegion, + const Point& aPos, + bool& rIsInside ); + + virtual bool drawNativeControl( + ControlType nType, ControlPart nPart, + const Rectangle& rControlRegion, + ControlState nState, + const ImplControlValue& aValue, + const OUString& aCaption ); + + virtual bool getNativeControlRegion( + ControlType nType, ControlPart nPart, + const Rectangle& rControlRegion, + ControlState nState, + const ImplControlValue& aValue, + const OUString& aCaption, + Rectangle &rNativeBoundingRegion, + Rectangle &rNativeContentRegion ); + + /** Render bitmap with alpha channel + + @param rSourceBitmap + Source bitmap to blit + + @param rAlphaBitmap + Alpha channel to use for blitting + + @return true, if the operation succeeded, and false + otherwise. In this case, clients should try to emulate alpha + compositing themselves + */ + virtual bool drawAlphaBitmap( + const SalTwoRect&, + const SalBitmap& rSourceBitmap, + const SalBitmap& rAlphaBitmap ) = 0; + + /** draw transformed bitmap (maybe with alpha) where Null, X, Y define the coordinate system */ + virtual bool drawTransformedBitmap( + const basegfx::B2DPoint& rNull, + const basegfx::B2DPoint& rX, + const basegfx::B2DPoint& rY, + const SalBitmap& rSourceBitmap, + const SalBitmap* pAlphaBitmap) = 0; + + /** Render solid rectangle with given transparency + + @param nTransparency + Transparency value (0-255) to use. 0 blits and opaque, 255 a + fully transparent rectangle + */ + virtual bool drawAlphaRect( + long nX, long nY, + long nWidth, long nHeight, + sal_uInt8 nTransparency ) = 0; + +private: + int m_nLayout; //< 0: mirroring off, 1: mirror x-axis + +protected: + /// flags which hold the SetAntialiasing() value from OutputDevice + bool m_bAntiAliasB2DDraw : 1; + }; #endif // INCLUDED_VCL_INC_SALGDI_HXX |