Class TAbstractDiagramModel

DescriptionHierarchyFieldsMethodsProperties

Unit

Declaration

type TAbstractDiagramModel = class(TPersistent)

Description

This is the abstract model class which stores the data to be shown If you want full customization you can use it as base class, but in most cases a TDiagramDataListModel is easier

Hierarchy

Overview

Methods

Public constructor create;
Public destructor destroy; override;
Public function dataRows: longint; virtual;
Public function dataTitle(i:longint):string; virtual;
Public procedure setupCanvasForData(i:longint; c: TCanvas); virtual;
Public function dataPoints(i:longint):longint; virtual; abstract;
Public procedure data(i,j:longint; out x,y:float); virtual; abstract;
Public function setData(i,j:longint; const x,y:float):integer; virtual;
Public function addData(i:longint; const x,y:float):integer; virtual;
Public procedure removeData(i,j:longint); virtual;
Public function minX(i:longint):float; virtual;
Public function maxX(i:longint):float; virtual;
Public function minY(i:longint):float; virtual;
Public function maxY(i:longint):float; virtual;
Public function getFlags: TModelFlags; virtual;
Public function getRowFlags(i:longint): TModelRowFlags; virtual;
Public function getRowLineStyle(i:longint):TLineStyle; virtual;
Public function getRowPointStyle(i:longint):TPointStyle; virtual;
Public function find(i:longint; const x:float; const y:float=NaN; const xtolerance:float=DiagramEpsilon; const ytolerance:float=NaN):longint; virtual;
Public function findAndGet(i:longint; var x:float; var y:float=NaN; const xtolerance:float=DiagramEpsilon; const ytolerance:float=NaN):longint; virtual;
Public function findWithRow(out i:longint; const x:float; const y:float=NaN; const xtolerance:float=DiagramEpsilon; const ytolerance:float=NaN):longint; virtual;
Public function findWithRowAndGet(out i:longint; var x:float; var y:float=NaN; const xtolerance:float=DiagramEpsilon; const ytolerance:float=NaN):longint; virtual;
Public function dataX(i,j:longint):float;
Public function dataY(i,j:longint):float;
Public function minX:float;
Public function maxX:float;
Public function minY:float;
Public function maxY:float;
Public function lineApproximationAtX(const defaultLineStyle:TLineStyle; i:longint; const x: float): float;
Public function findLineApproximation(const defaultLineStyle:TLineStyle; const x,y:float; const ytolerance: float=DiagramEpsilon): longint;
Public procedure addModifiedHandler(event: TNotifyEvent);
Public procedure removeModifiedHandler(event: TNotifyEvent);
Public procedure addDestroyHandler(event: TNotifyEvent);
Public procedure removeDestroyHandler(event: TNotifyEvent);

Properties

Public property OnModified: TNotifyEvent read FOnModified write SetOnModified;

Description

Methods

Public constructor create;
 
Public destructor destroy; override;
 
Public function dataRows: longint; virtual;

This returns the number of data rows (override if you use more than 1)

Public function dataTitle(i:longint):string; virtual;

This returns the title of every data row for the legend

Public procedure setupCanvasForData(i:longint; c: TCanvas); virtual;

This setups the canvas (override it to set the color, set pen and brush to the same)

Public function dataPoints(i:longint):longint; virtual; abstract;

Returns the count of data points in a given row

Public procedure data(i,j:longint; out x,y:float); virtual; abstract;

This returns the actual data (you must override it), j from 0 to dataPoints(i)-1, the must be in sorted order (x[i]<x[i+1])

Public function setData(i,j:longint; const x,y:float):integer; virtual;

Set the data point and returns the new index (default does nothing and returns j) (if you override it, keep in mind that data must return its values in a sorted order)

Public function addData(i:longint; const x,y:float):integer; virtual;

Add a data point and returns the new index (default does nothing and returns -1) (if you override it, keep in mind that data must return its values in a sorted order)

Public procedure removeData(i,j:longint); virtual;

removes a certain data point (default does nothing)

Public function minX(i:longint):float; virtual;

returns the minimum x (default first data point, O(1))

Public function maxX(i:longint):float; virtual;

returns the maximum x (default last data point, O(1))

Public function minY(i:longint):float; virtual;

returns the minimum value (default scans all values, O(n))

Public function maxY(i:longint):float; virtual;

returns the maximum value (default scans all values, O(n))

Public function getFlags: TModelFlags; virtual;

returns model flags (e.g. editable)

Public function getRowFlags(i:longint): TModelRowFlags; virtual;

returns flags for a given row

Public function getRowLineStyle(i:longint):TLineStyle; virtual;

overrides drawer line style

Public function getRowPointStyle(i:longint):TPointStyle; virtual;

overrides drawer line style

Public function find(i:longint; const x:float; const y:float=NaN; const xtolerance:float=DiagramEpsilon; const ytolerance:float=NaN):longint; virtual;

Searchs the point in row i at position x,y with xtolerance, ytolerance If y is NaN, only the x position is used If ytolerance is NaN, the x tolerance is used for it If the point isn't found, it returns -1 The default implementation checks all points TODO: implement binary search

Public function findAndGet(i:longint; var x:float; var y:float=NaN; const xtolerance:float=DiagramEpsilon; const ytolerance:float=NaN):longint; virtual;

like find but set the position to the correct values (default calls find)

Public function findWithRow(out i:longint; const x:float; const y:float=NaN; const xtolerance:float=DiagramEpsilon; const ytolerance:float=NaN):longint; virtual;

like find but searchs in all rows and returns the correct one (default calls find)

Public function findWithRowAndGet(out i:longint; var x:float; var y:float=NaN; const xtolerance:float=DiagramEpsilon; const ytolerance:float=NaN):longint; virtual;

like findRow but set the position to the correct values (default calls findAndGet)

Public function dataX(i,j:longint):float;

returns x of point i,j, calls data

Public function dataY(i,j:longint):float;

returns y of point i,j, calls data

Public function minX:float;
 
Public function maxX:float;
 
Public function minY:float;
 
Public function maxY:float;
 
Public function lineApproximationAtX(const defaultLineStyle:TLineStyle; i:longint; const x: float): float;

this returns the position of the interpolation line (linear/cubic) in data coordinates

Public function findLineApproximation(const defaultLineStyle:TLineStyle; const x,y:float; const ytolerance: float=DiagramEpsilon): longint;

finds a line like find. (since the line is 1-dimensional the x coordinate is not sufficient and has to be exact)

Public procedure addModifiedHandler(event: TNotifyEvent);
 
Public procedure removeModifiedHandler(event: TNotifyEvent);
 
Public procedure addDestroyHandler(event: TNotifyEvent);
 
Public procedure removeDestroyHandler(event: TNotifyEvent);
 

Properties

Public property OnModified: TNotifyEvent read FOnModified write SetOnModified;
 

Generated by PasDoc 0.11.0 on 2012-07-31 14:28:32