// CodeGear C++Builder
// Copyright (c) 1995, 2015 by Embarcadero Technologies, Inc.
// All rights reserved

// (DO NOT EDIT: machine generated header) 'iegdiplus.pas' rev: 30.00 (Windows)

#ifndef IegdiplusHPP
#define IegdiplusHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member 
#pragma pack(push,8)
#include <System.hpp>
#include <SysInit.hpp>
#include <Winapi.Windows.hpp>
#include <System.Classes.hpp>
#include <System.SysUtils.hpp>
#include <Vcl.Graphics.hpp>
#include <System.Types.hpp>
#include <System.UITypes.hpp>
#include <hyiedefs.hpp>

//-- user supplied -----------------------------------------------------------

namespace Iegdiplus
{
//-- forward type declarations -----------------------------------------------
class DELPHICLASS TIEPen;
class DELPHICLASS TIEBrush;
class DELPHICLASS TIECanvas;
//-- type declarations -------------------------------------------------------
enum DECLSPEC_DENUM TIECanvasSmoothingMode : unsigned char { iesmInvalid, iesmDefault, iesmBestPerformance, iesmBestRenderingQuality, iesmNone, iesmAntialias };

enum DECLSPEC_DENUM TIECanvasPenLineJoin : unsigned char { ieljMiter, ieljBevel, ieljRound, ieljMiterClipped };

#pragma pack(push,4)
class PASCALIMPLEMENTATION TIEPen : public System::TObject
{
	typedef System::TObject inherited;
	
private:
	void *FGHandle;
	Vcl::Graphics::TPen* FPen;
	System::Uitypes::TColor FColor;
	int FTransparency;
	float FWidth;
	Vcl::Graphics::TPenStyle FStyle;
	Vcl::Graphics::TPenMode FMode;
	TIECanvasPenLineJoin FLineJoin;
	void __fastcall ReCreatePen(void);
	void __fastcall SetWidth(float value);
	void __fastcall SetTColor(System::Uitypes::TColor value);
	void __fastcall SetTransparency(int value);
	void __fastcall SetStyle(Vcl::Graphics::TPenStyle value);
	Hyiedefs::TRGBA __fastcall GetRGBAColor(void);
	void __fastcall SetMode(Vcl::Graphics::TPenMode value);
	void __fastcall SetVHandle(HPEN value);
	HPEN __fastcall GetVHandle(void);
	void __fastcall SetLineJoin(TIECanvasPenLineJoin value);
	
public:
	__fastcall TIEPen(Vcl::Graphics::TPen* Pen);
	__fastcall virtual ~TIEPen(void);
	__property float Width = {read=FWidth, write=SetWidth};
	__property System::Uitypes::TColor Color = {read=FColor, write=SetTColor, nodefault};
	__property int Transparency = {read=FTransparency, write=SetTransparency, nodefault};
	__property Vcl::Graphics::TPenStyle Style = {read=FStyle, write=SetStyle, nodefault};
	__property Vcl::Graphics::TPenMode Mode = {read=FMode, write=SetMode, nodefault};
	__property HPEN Handle = {read=GetVHandle, write=SetVHandle, nodefault};
	__property TIECanvasPenLineJoin LineJoin = {read=FLineJoin, write=SetLineJoin, nodefault};
};

#pragma pack(pop)

#pragma pack(push,4)
class PASCALIMPLEMENTATION TIEBrush : public System::TObject
{
	typedef System::TObject inherited;
	
private:
	void *FGHandle;
	Vcl::Graphics::TBrush* FBrush;
	System::Uitypes::TColor FColor;
	int FTransparency;
	System::Uitypes::TColor FBackColor;
	int FBackTransparency;
	Vcl::Graphics::TBrushStyle FStyle;
	void __fastcall ReCreateBrush(void);
	Vcl::Graphics::TBitmap* __fastcall GetBitmap(void);
	void __fastcall SetBitmap(Vcl::Graphics::TBitmap* value);
	void __fastcall SetTColor(System::Uitypes::TColor value);
	void __fastcall SetBackTColor(System::Uitypes::TColor value);
	void __fastcall SetTransparency(int value);
	void __fastcall SetBackTransparency(int value);
	void __fastcall SetStyle(Vcl::Graphics::TBrushStyle value);
	Hyiedefs::TRGBA __fastcall GetRGBAColor(void);
	
public:
	__fastcall TIEBrush(Vcl::Graphics::TBrush* Brush);
	__fastcall virtual ~TIEBrush(void);
	__property Vcl::Graphics::TBitmap* Bitmap = {read=GetBitmap, write=SetBitmap};
	__property System::Uitypes::TColor Color = {read=FColor, write=SetTColor, nodefault};
	__property System::Uitypes::TColor BackColor = {read=FBackColor, write=SetBackTColor, nodefault};
	__property int Transparency = {read=FTransparency, write=SetTransparency, nodefault};
	__property int BackTransparency = {read=FBackTransparency, write=SetBackTransparency, nodefault};
	__property Vcl::Graphics::TBrushStyle Style = {read=FStyle, write=SetStyle, nodefault};
};

#pragma pack(pop)

class PASCALIMPLEMENTATION TIECanvas : public System::TObject
{
	typedef System::TObject inherited;
	
private:
	TIECanvasSmoothingMode FSmoothingMode;
	void __fastcall SetSmoothingMode(TIECanvasSmoothingMode value);
	void __fastcall SetPenPos(const System::Types::TPoint &value);
	HDC __fastcall GetHandle(void);
	Vcl::Graphics::TFont* __fastcall GetFont(void);
	
protected:
	void *FGraphics;
	Vcl::Graphics::TCanvas* FCanvas;
	TIEPen* FPen;
	System::Types::TPoint FPenPos;
	TIEBrush* FBrush;
	bool FUseGDIPlus;
	void *FImage;
	System::Classes::TNotifyEvent FOnDestroy;
	System::TObject* FROIBitmap;
	
public:
	__fastcall TIECanvas(Vcl::Graphics::TCanvas* Canvas, bool AntiAlias, bool UseGDIPlus, Vcl::Graphics::TBitmap* Bitmap)/* overload */;
	__fastcall virtual ~TIECanvas(void);
	__property TIECanvasSmoothingMode SmoothingMode = {read=FSmoothingMode, write=SetSmoothingMode, nodefault};
	__property System::Types::TPoint PenPos = {read=FPenPos, write=SetPenPos};
	__property TIEPen* Pen = {read=FPen};
	__property TIEBrush* Brush = {read=FBrush};
	void __fastcall MoveTo(int X, int Y);
	void __fastcall LineTo(int X, int Y);
	void __fastcall FillRect(const System::Types::TRect &Rect);
	void __fastcall Rectangle(int X1, int Y1, int X2, int Y2)/* overload */;
	void __fastcall Rectangle(const System::Types::TRect &Rect)/* overload */;
	void __fastcall Ellipse(int X1, int Y1, int X2, int Y2)/* overload */;
	void __fastcall Ellipse(const System::Types::TRect &Rect)/* overload */;
	void __fastcall DrawLine(int X1, int Y1, int X2, int Y2);
	void __fastcall DrawLinesPath(Hyiedefs::TIE2DPointArray points);
	void __fastcall Polygon(System::Types::TPoint *Points, const int Points_High);
	void __fastcall Arc(int X1, int Y1, int X2, int Y2, int X3, int Y3, int X4, int Y4);
	void __fastcall Polyline(System::Types::TPoint *Points, const int Points_High);
	__property HDC Handle = {read=GetHandle, nodefault};
	int __fastcall TextWidth(const System::WideString Text);
	int __fastcall TextHeight(const System::WideString Text);
	void __fastcall TextOut(int X, int Y, const System::UnicodeString Text);
	void __fastcall TextOut2(int X, int Y, const System::UnicodeString Text);
	__property Vcl::Graphics::TFont* Font = {read=GetFont};
	void __fastcall TextRect(const System::Types::TRect &Rect, int X, int Y, const System::WideString Text);
	void __fastcall TextRectEx(const System::Types::TRect &Rect, int X, int Y, const System::WideString Text);
	System::Types::TSize __fastcall TextExtent(const System::WideString Text);
	void __fastcall RoundRect(int X1, int Y1, int X2, int Y2, int X3, int Y3);
	__property Vcl::Graphics::TCanvas* GDICanvas = {read=FCanvas};
	void __fastcall Rotate(double Angle);
	void __fastcall Translate(double dx, double dy);
	void __fastcall ResetTransform(void);
	void __fastcall Pie(float X, float Y, float Width, float Height, float StartAngle, float SweepAngle)/* overload */;
	void __fastcall Pie(int X1, int Y1, int X2, int Y2, int X3, int Y3, int X4, int Y4)/* overload */;
	__property System::Classes::TNotifyEvent OnDestroy = {read=FOnDestroy, write=FOnDestroy};
	__property System::TObject* ROIBitmap = {read=FROIBitmap, write=FROIBitmap};
};


//-- var, const, procedure ---------------------------------------------------
extern DELPHI_PACKAGE bool __fastcall IEGDIPAvailable(void);
extern DELPHI_PACKAGE bool __fastcall IEGDIPEnabled(void);
extern DELPHI_PACKAGE void __fastcall IEGDIPLoadLibrary(void);
extern DELPHI_PACKAGE void __fastcall IEGDIPUnLoadLibrary(void);
extern DELPHI_PACKAGE void __fastcall IEInitialize_iegdiplus(void);
extern DELPHI_PACKAGE void __fastcall IEFinalize_iegdiplus(void);
}	/* namespace Iegdiplus */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_IEGDIPLUS)
using namespace Iegdiplus;
#endif
#pragma pack(pop)
#pragma option pop

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif	// IegdiplusHPP
