1 {
2 
3  *****************************************************************************
4   See the file COPYING.modifiedLGPL.txt, included in this distribution,
5   for details about the license.
6  *****************************************************************************
7 
8   Authors: Alexander Klenin
9 
10 }
11 unit TAGUIConnectorBGRA;
12 
13 {$H+}
14 
15 interface
16 
17 uses
18   Classes, Graphics,
19   TAGUIConnector;
20 
21 type
22   TChartGUIConnectorBGRA = class(TChartGUIConnector)
23   public
24     procedure CreateDrawer(var AData: TChartGUIConnectorData); override;
25     procedure SetBounds(var AData: TChartGUIConnectorData); override;
26     procedure Display(var AData: TChartGUIConnectorData); override;
27   end;
28 
29 procedure Register;
30 
31 implementation
32 
33 uses
34   BGRABitmap, SysUtils, TAChartUtils, TADrawerBGRA, TADrawerCanvas, TAGeometry;
35 
36 type
37   TBGRABitmapOwnerDrawer = class(TBGRABitmapDrawer)
38   public
39     destructor Destroy; override;
40     procedure SetSize(ASize: TPoint);
41     procedure PaintOnCanvas(ACanvas: TCanvas; const ARect: TRect);
42   end;
43 
44 procedure Register;
45 begin
46   RegisterComponents(CHART_COMPONENT_IDE_PAGE, [TChartGUIConnectorBGRA]);
47 end;
48 
49 { TChartGUIConnectorBGRA }
50 
51 procedure TChartGUIConnectorBGRA.CreateDrawer(
52   var AData: TChartGUIConnectorData);
53 begin
54   AData.FDrawer := TBGRABitmapOwnerDrawer.Create(TBGRABitmap.Create(0, 0));
55   AData.FDrawer.DoGetFontOrientation := @CanvasGetFontOrientationFunc;
56 end;
57 
58 procedure TChartGUIConnectorBGRA.Display(var AData: TChartGUIConnectorData);
59 begin
60   (AData.FDrawer as TBGRABitmapOwnerDrawer).PaintOnCanvas(
61     AData.FCanvas, AData.FBounds);
62 end;
63 
64 procedure TChartGUIConnectorBGRA.SetBounds(var AData: TChartGUIConnectorData);
65 begin
66   AData.FDrawerBounds.TopLeft := Point(0, 0);
67   AData.FDrawerBounds.BottomRight :=
68     AData.FBounds.BottomRight - AData.FBounds.TopLeft;
69   (AData.FDrawer as TBGRABitmapOwnerDrawer).SetSize(
70     AData.FDrawerBounds.BottomRight);
71 end;
72 
73 { TBGRABitmapOwnerDrawer }
74 
75 destructor TBGRABitmapOwnerDrawer.Destroy;
76 begin
77   inherited;
78   FreeAndNil(FBitmap);
79 end;
80 
81 procedure TBGRABitmapOwnerDrawer.PaintOnCanvas(
82   ACanvas: TCanvas; const ARect: TRect);
83 begin
84   FBitmap.Draw(ACanvas, ARect);
85 end;
86 
87 procedure TBGRABitmapOwnerDrawer.SetSize(ASize: TPoint);
88 begin
89   FBitmap.SetSize(ASize.X, ASize.Y);
90 end;
91 
92 end.
93