Unit xyGraph

-------------------------- Dedication --------------------------------- Dedicated to our daughter Brianna Grieve stillborn 6th July 1996 -----------------------------------------------------------------------} { TxyGraph version 3.01 see documentation (default in /docs/index.htm) for - current known buglist - how to use TxyGraph} { copyright © Kestral Computing contact grahameg@kestral.com.au } { definitions:} {$I xyDefine.pas} {--------------- implementation section heading labels --------------- #1a. TSeries - administration #1b. TSeries - property servers #1c. TSeries - drawing routines #2a. TAxis - scaling routines #2b. TAxis - property servers #3. TDimensions #4. TAppearance #5. TLegend #6a. TxyGraph - administration #6b. TxyGraph - mouse routines #6c. TxyGraph - metrics routines #6d. TxyGraph - painting routines #6e. TxyGraph - property servers #6f. TxyGraph - series routines #6g. TxyGraph - data manipulation #6h. TxyGraph - Marks routines #6i. TxyGraph - External interaction (clipboard, assign, savetofile etc) ----------------------------------------------------------------------

Classes

TAppearance - TDimensions
TAxis -
TDimensions - class TAxis
TLegend - TAppearance
TSeries - ------------------------ TSeries --------------------------------
TxyGraph - -------------------------- TxyGraph ------------------------------

Functions

Types

Dateticks
et_BoundType
et_MarkType
et_PointShape
pHookedSeries
PlotFunction
pMark
TAxisOffsetType
THookedSeries
THookType
TLegendStatus
TLegendStyle
TLogTickInfo
tMark
TPaintEvent
TSeriesEvent

Constants

AllowedLogTickCounts
defMinXScale
defMinYScale
drawAfter
drawBefore
MaxLogTickCount
MouseToleranceHit
MouseToleranceMove
versionstamp
xyGraphFileSig
xyGraphFileVersion

Variables

CF_xyGraphFmt


Functions


Types


Dateticks = (dt_minute, dt_5minute, dt_halfhourly, dt_hourly,
         dt_daily, dt_weekly, dt_monthly, dt_2monthly, dt_quarterly,
         dt_annually, dt_decade, dt_century, dt_custom);

et_BoundType = (bt_None, bt_AsSet, bt_1SD, bt_2SD, bt_3SD, bt_allSD);

et_MarkType = (mtXMark,mtYMark,mtPoint,mtLine);

et_PointShape = (ps_Square, ps_Circle, ps_Diamond, ps_Cross, ps_Wide);

pHookedSeries = ^THookedSeries

PlotFunction = function(x: Double; var parms): Double

pMark = ^Tmark

TAxisOffsetType = (ao_Minimum, ao_Maximum, ao_percentage, ao_absolute);
------------ TAxis, TDimensions, TAppearance ----------------
THookedSeries = record
id : TSeries;
hooktype : THookType;
Series : integer;
next : pHookedSeries;
end;

THookType = (ht_PlotData                                               );
class TSeries
TLegendStatus = (lsNone, lsNameOnly, lsPoints, lsLines, lsAll);

TLegendStyle = (lsAcross, lsDown);

TLogTickInfo = record
LogTickArray : array[0..MaxLogTickCount+1] of Double;
LogTickCount : Word;
LogTickIndex : Word;
LogStepping : Boolean;
DrawMinorLabels : Boolean;
end;

tMark = record
id : integer;
x1 : double;
y1 : double;
x2 : double;
y2 : double;
color : Tcolor;
caption : String;
next : pmark;
marktype : et_Marktype;
status : boolean;
end;

TPaintEvent = procedure (sender:TObject; Canvas:TCanvas) of object

TSeriesEvent =  procedure (sender:TObject; index:integer) of object

Constants

AllowedLogTickCounts = [0,1,2,5,7,9]

defMinXScale = 0.0

defMinYScale = 0.0

drawAfter = true

drawBefore = false

MaxLogTickCount = 9

InitLogTicks and AdjustLogTickCount must correspond. AdjustLogLabelDecs must correspond with the result of InitLogTicks.

MouseToleranceHit = 5

pixels mouse must move before it counts

MouseToleranceMove = 4

Must equal largest value in AllowedLogTickCounts

versionstamp = '3.01'

xyGraphFileSig = 'xygg'

xyGraphFileVersion = '0'


Variables

CF_xyGraphFmt : word

how far from target mouse is allowed to be