ALGOL 68/prelude/graph 2d.a68: Difference between revisions

Content added Content deleted
m (rename some objects)
m (rename some objects)
Line 21: Line 21:
MODE POINT = [axis 2d]GREAL;
MODE POINT = [axis 2d]GREAL;
MODE POINTDETAIL = STRUCT(STRINGOPT label, POINTOPTION option);
MODE POINTDETAIL = STRUCT(STRINGOPT label, POINTOPTION option);
MODE YIELDPOINT = PROC(POINT)VOID;
MODE POINTYIELD = PROC(POINT)VOID;
MODE GENPOINT = PROC(YIELDPOINT)VOID;
MODE POINTGEN = PROC(POINTYIELD)VOID;


MODE TICK = STRUCT(INT number, GREAL len);
MODE TICK = STRUCT(INT number, GREAL len);
Line 99: Line 99:
[axis 2d]AXIS axis
[axis 2d]AXIS axis
# FLEX[0]AXISOPT y2, #
# FLEX[0]AXISOPT y2, #
# GENPOINT gen point #
# POINTGEN gen point #
);
);


MODE FUNCTIONINTERVAL = STRUCT(PROC(REAL)REAL function, INTERVAL interval);
MODE FUNCTIONINTERVAL = STRUCT(PROC(REAL)REAL function, INTERVAL interval);
MODE CURVE = UNION(GENPOINT, []POINT, FUNCTIONINTERVAL);
MODE CURVE = UNION(POINTGEN, []POINT, FUNCTIONINTERVAL);


MODE GRAPHDDMETHODOF = STRUCT(
MODE GRAPHDDMETHODOF = STRUCT(
Line 113: Line 113:
PROC (NOARG)VOID decorate,
PROC (NOARG)VOID decorate,
PROC (NOARG)VOID begin curve,
PROC (NOARG)VOID begin curve,
PROC (GENPOINT #curve#, LINEOPTION #option#)VOID add curve gen point,
PROC (POINTGEN #curve#, LINEOPTION #option#)VOID add curve gen point,
PROC ([]POINT #curve#, LINEOPTION #option#)VOID add curve array point,
PROC ([]POINT #curve#, LINEOPTION #option#)VOID add curve array point,
PROC (FUNCTIONINTERVAL #function interval#, LINEOPTION #option#)VOID add curve function interval,
PROC (FUNCTIONINTERVAL #function interval#, LINEOPTION #option#)VOID add curve function interval,
Line 260: Line 260:
);
);


PROC add curve gen point of graph 2d = (REF GRAPHDD self, GENPOINT gen point, LINEOPTION option)VOID:(
PROC add curve gen point of graph 2d = (REF GRAPHDD self, POINTGEN gen point, LINEOPTION option)VOID:(
REF FILE window = file OF window OF self;
REF FILE window = file OF window OF self;
BOOL first := TRUE;
BOOL first := TRUE;
Line 286: Line 286:


PROC add curve array point of graph 2d = (REF GRAPHDD self, []POINT curve, LINEOPTION option)VOID:(
PROC add curve array point of graph 2d = (REF GRAPHDD self, []POINT curve, LINEOPTION option)VOID:(
PROC gen curve = (YIELDPOINT yield)VOID:
PROC gen curve = (POINTYIELD yield)VOID:
FOR i TO UPB curve DO yield(curve[i]) OD;
FOR i TO UPB curve DO yield(curve[i]) OD;
(add curve gen point OF (METHODOF self))(gen curve, option)
(add curve gen point OF (METHODOF self))(gen curve, option)
Line 292: Line 292:


PROC add curve function interval of graph 2d = (REF GRAPHDD self, FUNCTIONINTERVAL function interval, LINEOPTION option)VOID:(
PROC add curve function interval of graph 2d = (REF GRAPHDD self, FUNCTIONINTERVAL function interval, LINEOPTION option)VOID:(
PROC gen curve = (YIELDPOINT yield)VOID:(
PROC gen curve = (POINTYIELD yield)VOID:(
INT n steps = 100;
INT n steps = 100;
REAL x := lwb OF interval OF function interval;
REAL x := lwb OF interval OF function interval;
Line 306: Line 306:
PROC add curve of graph 2d = (REF GRAPHDD self, CURVE curve, LINEOPTION option)VOID:(
PROC add curve of graph 2d = (REF GRAPHDD self, CURVE curve, LINEOPTION option)VOID:(
CASE curve IN
CASE curve IN
(GENPOINT gen): (add curve gen point OF (METHODOF self))(gen, option),
(POINTGEN gen): (add curve gen point OF (METHODOF self))(gen, option),
([]POINT array): (add curve array point OF (METHODOF self))(array, option),
([]POINT array): (add curve array point OF (METHODOF self))(array, option),
(FUNCTIONINTERVAL function interval): (add curve function interval OF (METHODOF self))(function interval, option)
(FUNCTIONINTERVAL function interval): (add curve function interval OF (METHODOF self))(function interval, option)