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 |
MODE POINTYIELD = PROC(POINT)VOID; |
||
MODE |
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, # |
||
# |
# POINTGEN gen point # |
||
); |
); |
||
MODE FUNCTIONINTERVAL = STRUCT(PROC(REAL)REAL function, INTERVAL interval); |
MODE FUNCTIONINTERVAL = STRUCT(PROC(REAL)REAL function, INTERVAL interval); |
||
MODE CURVE = UNION( |
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 ( |
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, |
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 = ( |
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 = ( |
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 |
||
( |
(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) |