File: taaxissource.pas

package info (click to toggle)
lazarus 2.0.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 214,460 kB
  • sloc: pascal: 1,862,622; xml: 265,709; cpp: 56,595; sh: 3,008; java: 609; makefile: 535; perl: 297; sql: 222; ansic: 137
file content (105 lines) | stat: -rw-r--r-- 2,333 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
{

 *****************************************************************************
  See the file COPYING.modifiedLGPL.txt, included in this distribution,
  for details about the license.
 *****************************************************************************

  Authors: Alexander Klenin

}

unit TAAxisSource;

{$H+}

interface

uses
  Classes, TACustomSource, TAChartAxis;

type
  TCustomAxisChartSource = class(TCustomChartSource)
  strict private
    FAxisFrom: TChartAxis;
    FAxisTo: TChartAxis;
    FItem: TChartDataItem;
  protected
    function GetCount: Integer; override;
    function GetItem(AIndex: Integer): PChartDataItem; override;
    procedure SetXCount(AValue: Cardinal); override;
    procedure SetYCount(AValue: Cardinal); override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  public
    function IsSorted: Boolean; override;

    property AxisFrom: TChartAxis read FAxisFrom write FAxisFrom;
    property AxisTo: TChartAxis read FAxisTo write FAxisTo;
  end;

implementation

uses
  TAChartUtils;

{ TCustomAxisChartSource }

constructor TCustomAxisChartSource.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FItem.Color := clTAColor;
  FItem.YList := nil;
end;

destructor TCustomAxisChartSource.Destroy;
begin
  inherited Destroy;
end;

function TCustomAxisChartSource.GetCount: Integer;
begin
  if AxisFrom = nil then
    Result := 0
  else
    Result := AxisFrom.ValueCount;
end;

function TCustomAxisChartSource.GetItem(AIndex: Integer): PChartDataItem;
var
  v: Double;
begin
  Result := @FItem;
  if AxisFrom = nil then exit;
  with AxisFrom.Value[AIndex] do begin
    FItem.Text := FText;
    v := FValue;
  end;
  if AxisFrom.Transformations <> nil then
    v := AxisFrom.Transformations.AxisToGraph(v);
  if (AxisTo <> nil) and (AxisTo.Transformations <> nil) then
    v := AxisTo.Transformations.GraphToAxis(v);
  FItem.X := v;
  FItem.Y := v;
end;

function TCustomAxisChartSource.IsSorted: Boolean;
begin
  Result := true;
end;

procedure TCustomAxisChartSource.SetXCount(AValue: Cardinal);
begin
  Unused(AValue);
  raise EXCountError.Create('Cannot set XCount');
end;

procedure TCustomAxisChartSource.SetYCount(AValue: Cardinal);
begin
  Unused(AValue);
  raise EYCountError.Create('Cannot set YCount');
end;

end.