//**************************************************************************************** // File: CairoGraphPort.h // // Copyright: 1999-2004, Ableton AG, Berlin. All rights reserved. //**************************************************************************************** #pragma once #if !defined(CairoGraphPort_h) #define CairoGraphPort_h //======================================================================================== //+I{ #include "WindView/Exp/GraphPort.h" #include //+I} //======================================================================================== //+F{ //+F} //======================================================================================== //+M{ #undef MDll //+M} //======================================================================================== class ACairoGraphPort : public AGraphPort { public: static ACairoGraphPort* SCreate( unsigned char* pBuffer, TInt Width, TInt Height, TInt Stride); ACairoGraphPort(cairo_surface_t* pSurface, TInt Width, TInt Height); virtual void DrawPixel(TPoint P, TColor Color); virtual void SetPixel(TPoint P, TColor Color); virtual void DrawLine(TPoint P0, TPoint P1, TColor Color); virtual void DrawLine(TPoint P0, TPoint P1, TColor Color, TInt Thickness); virtual void DrawLine( TPoint P0, TPoint P1, TColor Color1, TColor Color2, const TFillPattern& Pattern); virtual void DrawLine( TPoint P0, TPoint P1, TColor Color1, TColor Color2, const TFillPattern& Pattern, TInt Thickness); virtual void DrawAntiAliasedLine( TFloat X, TFloat Y, TFloat X2, TFloat Y2, TColor Color, TFloat Thickness); virtual void DrawRect(TRect Rect, TColor Color); virtual void DrawRect(TRect Rect, TColor Color, TInt Thickness); virtual void DrawRect( TRect Rect, TColor Color1, TColor Color2, const TFillPattern& Pattern); virtual void DrawRect( TRect Rect, TColor Color1, TColor Color2, const TFillPattern& Pattern, TInt Thickness); virtual void DrawCorners(TRect Rect, TInt Length, TColor Color); virtual void DrawCorners(TRect Rect, TInt Length, TColor Color, TInt Thickness); virtual void DrawFilledRect(TRect Rect, TColor Color); virtual void DrawFilledRectThreshold( TRect Rect, TColor Color1, TColor Color2, TDouble Threshold); virtual void FillLowerDiagonalOfRect(TPoint Left, TPoint Right, TColor Color); virtual void DrawFilledTriangle(TPoint Point, TInt X, TInt Y, TColor Color); virtual void Clear(TColor Color); virtual void SetAlpha(TU8 Alpha, TRect Rect); virtual void DrawBitmap( ABitmap *pBitmap, TPoint DstPos, TBool UseAlpha = false); virtual void DrawBitmap( ABitmap *pBitmap, TRect Src, TPoint DstPos, TBool UseAlpha = false); virtual void DrawBitmapScaled( TPtr pSrcBitmap, TRect SrcRect, TRect DstRect, TBool UseAlpha, TBool DstInFixedPoint = false); void SetColor(TColor Color); private: void Init(cairo_surface_t* pSurface); cairo_t* mpCairo; cairo_surface_t* mpSurface; }; //---------------------------------------------------------------------------------------- MInline void ACairoGraphPort::SetColor(TColor Color) { cairo_set_source_rgba( mpCairo, Color.Red() / 255.0, Color.Green() / 255.0, Color.Blue() / 255.0, Color.Alpha() / 255.0); } #endif // CairoGraphPort_h //**************************************************************************************** // E O F //****************************************************************************************