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