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