mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-21 23:19:29 +02:00
TAChart: Add GUI connector for AggPas drawing back-end
git-svn-id: trunk@40181 -
This commit is contained in:
parent
28dff08465
commit
a4c553db95
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -2935,6 +2935,7 @@ components/tachart/README.txt svneol=native#text/plain
|
||||
components/tachart/aggpas/tachartaggpas.lpk svneol=native#text/pascal
|
||||
components/tachart/aggpas/tachartaggpas.pas svneol=native#text/pascal
|
||||
components/tachart/aggpas/tadraweraggpas.pas svneol=native#text/pascal
|
||||
components/tachart/aggpas/taguiconnectoraggpas.pas svneol=native#text/pascal
|
||||
components/tachart/demo/3d/main.lfm svneol=native#text/plain
|
||||
components/tachart/demo/3d/main.pas svneol=native#text/plain
|
||||
components/tachart/demo/3d/zdemo.lpi svneol=native#text/plain
|
||||
|
@ -1,11 +1,12 @@
|
||||
<?xml version="1.0"?>
|
||||
<CONFIG>
|
||||
<Package Version="3">
|
||||
<Package Version="4">
|
||||
<PathDelim Value="\"/>
|
||||
<Name Value="TAChartAggPas"/>
|
||||
<AddToProjectUsesSection Value="True"/>
|
||||
<Author Value="Alexander Klenin"/>
|
||||
<CompilerOptions>
|
||||
<Version Value="10"/>
|
||||
<Version Value="11"/>
|
||||
<PathDelim Value="\"/>
|
||||
<SearchPaths>
|
||||
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)\$(LCLWidgetType)"/>
|
||||
@ -19,11 +20,16 @@
|
||||
</CompilerOptions>
|
||||
<Description Value="AggPas drawing back-end for TAChart"/>
|
||||
<Version Major="1"/>
|
||||
<Files Count="1">
|
||||
<Files Count="2">
|
||||
<Item1>
|
||||
<Filename Value="tadraweraggpas.pas"/>
|
||||
<UnitName Value="TADrawerAggPas"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<Filename Value="taguiconnectoraggpas.pas"/>
|
||||
<HasRegisterProc Value="True"/>
|
||||
<UnitName Value="TAGUIConnectorAggPas"/>
|
||||
</Item2>
|
||||
</Files>
|
||||
<Type Value="RunAndDesignTime"/>
|
||||
<RequiredPkgs Count="3">
|
||||
|
@ -2,19 +2,20 @@
|
||||
This source is only used to compile and install the package.
|
||||
}
|
||||
|
||||
unit TAChartAggPas;
|
||||
unit TAChartAggPas;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
TADrawerAggPas, LazarusPackageIntf;
|
||||
TADrawerAggPas, TAGUIConnectorAggPas, LazarusPackageIntf;
|
||||
|
||||
implementation
|
||||
|
||||
procedure Register;
|
||||
procedure Register;
|
||||
begin
|
||||
end;
|
||||
RegisterUnit('TAGUIConnectorAggPas', @TAGUIConnectorAggPas.Register);
|
||||
end;
|
||||
|
||||
initialization
|
||||
RegisterPackage('TAChartAggPas', @Register);
|
||||
RegisterPackage('TAChartAggPas', @Register);
|
||||
end.
|
||||
|
@ -28,12 +28,12 @@ type
|
||||
|
||||
TAggPasDrawer = class(TBasicDrawer, IChartDrawer)
|
||||
strict private
|
||||
FCanvas: TAggLCLCanvas;
|
||||
function ApplyTransparency(AColor: TFPColor): TFPColor;
|
||||
procedure SetBrush(ABrush: TFPCustomBrush);
|
||||
procedure SetFont(AFont: TFPCustomFont);
|
||||
procedure SetPen(APen: TFPCustomPen);
|
||||
strict protected
|
||||
FCanvas: TAggLCLCanvas;
|
||||
function GetFontAngle: Double; override;
|
||||
function SimpleTextExtent(const AText: String): TPoint; override;
|
||||
procedure SimpleTextOut(AX, AY: Integer; const AText: String); override;
|
||||
|
112
components/tachart/aggpas/taguiconnectoraggpas.pas
Normal file
112
components/tachart/aggpas/taguiconnectoraggpas.pas
Normal file
@ -0,0 +1,112 @@
|
||||
{
|
||||
|
||||
*****************************************************************************
|
||||
* *
|
||||
* See the file COPYING.modifiedLGPL.txt, included in this distribution, *
|
||||
* for details about the copyright. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
||||
* *
|
||||
*****************************************************************************
|
||||
|
||||
Authors: Alexander Klenin
|
||||
|
||||
}
|
||||
unit TAGUIConnectorAggPas;
|
||||
|
||||
{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes,
|
||||
TAGUIConnector;
|
||||
|
||||
type
|
||||
TChartGUIConnectorAggPas = class(TChartGUIConnector)
|
||||
public
|
||||
procedure CreateDrawer(var AData: TChartGUIConnectorData); override;
|
||||
procedure SetBounds(var AData: TChartGUIConnectorData); override;
|
||||
procedure Display(var AData: TChartGUIConnectorData); override;
|
||||
end;
|
||||
|
||||
procedure Register;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
Agg_LCL, Graphics, SysUtils, TAChartUtils, TADrawerAggPas, TADrawerCanvas,
|
||||
TAGeometry;
|
||||
|
||||
type
|
||||
TAggPasOwnerDrawer = class(TAggPasDrawer)
|
||||
strict protected
|
||||
FBitmap: TBitmap;
|
||||
public
|
||||
constructor Create(ACanvas: TAggLCLCanvas);
|
||||
destructor Destroy; override;
|
||||
procedure SetSize(ASize: TPoint);
|
||||
procedure PaintOnCanvas(ACanvas: TCanvas; const ARect: TRect);
|
||||
end;
|
||||
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterComponents(CHART_COMPONENT_IDE_PAGE, [TChartGUIConnectorAggPas]);
|
||||
end;
|
||||
|
||||
{ TChartGUIConnectorAggPas }
|
||||
|
||||
procedure TChartGUIConnectorAggPas.CreateDrawer(
|
||||
var AData: TChartGUIConnectorData);
|
||||
begin
|
||||
AData.FDrawer := TAggPasOwnerDrawer.Create(TAggLCLCanvas.Create);
|
||||
AData.FDrawer.DoGetFontOrientation := @CanvasGetFontOrientationFunc;
|
||||
end;
|
||||
|
||||
procedure TChartGUIConnectorAggPas.Display(var AData: TChartGUIConnectorData);
|
||||
begin
|
||||
(AData.FDrawer as TAggPasOwnerDrawer).PaintOnCanvas(
|
||||
AData.FCanvas, AData.FBounds);
|
||||
end;
|
||||
|
||||
procedure TChartGUIConnectorAggPas.SetBounds(var AData: TChartGUIConnectorData);
|
||||
begin
|
||||
AData.FDrawerBounds.TopLeft := Point(0, 0);
|
||||
AData.FDrawerBounds.BottomRight :=
|
||||
AData.FBounds.BottomRight - AData.FBounds.TopLeft;
|
||||
(AData.FDrawer as TAggPasOwnerDrawer).SetSize(
|
||||
AData.FDrawerBounds.BottomRight);
|
||||
end;
|
||||
|
||||
{ TAggPasOwnerDrawer }
|
||||
|
||||
constructor TAggPasOwnerDrawer.Create(ACanvas: TAggLCLCanvas);
|
||||
begin
|
||||
inherited Create(ACanvas);
|
||||
FBitmap := TBitmap.Create;
|
||||
end;
|
||||
|
||||
destructor TAggPasOwnerDrawer.Destroy;
|
||||
begin
|
||||
inherited;
|
||||
FreeAndNil(FBitmap);
|
||||
FreeAndNil(FCanvas);
|
||||
end;
|
||||
|
||||
procedure TAggPasOwnerDrawer.PaintOnCanvas(
|
||||
ACanvas: TCanvas; const ARect: TRect);
|
||||
begin
|
||||
FBitmap.LoadFromIntfImage(FCanvas.Image.IntfImg);
|
||||
ACanvas.Draw(ARect.Left, ARect.Top, FBitmap);
|
||||
end;
|
||||
|
||||
procedure TAggPasOwnerDrawer.SetSize(ASize: TPoint);
|
||||
begin
|
||||
FBitmap.SetSize(ASize.X, ASize.Y);
|
||||
FCanvas.Width := ASize.X;
|
||||
FCanvas.Height := ASize.Y;
|
||||
end;
|
||||
|
||||
end.
|
Loading…
Reference in New Issue
Block a user