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 TAGUIConnector;
12 
13 {$H+}
14 
15 interface
16 
17 uses
18   Classes, Graphics,
19   TAChartUtils, TADrawUtils, TADrawerCanvas;
20 
21 type
22   TChartGUIConnectorData = record
23     FBounds: TRect;
24     FCanvas: TCanvas;
25     FDrawer: IChartDrawer;
26     FDrawerBounds: TRect;
27   end;
28 
29   TChartGUIConnector = class(TComponent)
30   strict private
31     FBroadcaster: TBroadcaster;
32   public
33     constructor Create(AOwner: TComponent); override;
34     destructor Destroy; override;
35 
36     procedure CreateDrawer(var AData: TChartGUIConnectorData); virtual; abstract;
37     procedure SetBounds(var AData: TChartGUIConnectorData); virtual; abstract;
38     procedure Display(var AData: TChartGUIConnectorData); virtual; abstract;
39 
40     property Broadcaster: TBroadcaster read FBroadcaster;
41   end;
42 
43   TChartGUIConnectorCanvas = class(TChartGUIConnector)
44   public
45     procedure CreateDrawer(var AData: TChartGUIConnectorData); override;
46     procedure SetBounds(var AData: TChartGUIConnectorData); override;
47     procedure Display(var AData: TChartGUIConnectorData); override;
48   end;
49 
50 implementation
51 
52 uses
53   SysUtils;
54 
55 { TChartGUIConnector }
56 
57 constructor TChartGUIConnector.Create(AOwner: TComponent);
58 begin
59   inherited Create(AOwner);
60   FBroadcaster := TBroadcaster.Create;
61 end;
62 
63 destructor TChartGUIConnector.Destroy;
64 begin
65   FreeAndNil(FBroadcaster);
66   inherited;
67 end;
68 
69 { TChartGUIConnectorCanvas }
70 
71 procedure TChartGUIConnectorCanvas.CreateDrawer(
72   var AData: TChartGUIConnectorData);
73 begin
74   AData.FDrawer := TCanvasDrawer.Create(AData.FCanvas);
75 end;
76 
77 procedure TChartGUIConnectorCanvas.Display(var AData: TChartGUIConnectorData);
78 begin
79   Unused(AData);
80 end;
81 
82 procedure TChartGUIConnectorCanvas.SetBounds(var AData: TChartGUIConnectorData);
83 begin
84   AData.FDrawerBounds := AData.FBounds;
85 end;
86 
87 end.
88