#INCLUDE "course.module" #INCLUDE "vector.inc" #INCLUDE "trace.inc" PROC vec.include (MOBILE []VEC.ENTRY vecs, INT i, VAL []VEC.ENTRY from) INITIAL INT pos IS 0: INITIAL BOOL running IS TRUE: WHILE running IF pos = (SIZE from) running := FALSE from[pos][type] = VEC.STOP running := FALSE TRUE SEQ vecs[i] := from[pos] i := i + 1 pos := pos + 1 : PROC vec.scale (MOBILE []VEC.ENTRY vecs, INT i, VAL REAL32 x, y, w, h) SEQ vecs[i][type] := VEC.SCALE vecs[i][args] := [x, y, w, h] i := i + 1 : PROC vec.unscale (MOBILE []VEC.ENTRY vecs, INT i) SEQ vecs[i][type] := VEC.UNSCALE i := i + 1 : PROC vec.colour (MOBILE []VEC.ENTRY vecs, INT i, VAL REAL32 r, g, b, a) SEQ vecs[i][type] := VEC.COLOUR vecs[i][args] := [r, g, b, a] i := i + 1 : PROC vec.line (MOBILE []VEC.ENTRY vecs, INT i, VAL REAL32 x1, y1, x2, y2) SEQ vecs[i][type] := VEC.LINE vecs[i][args] := [x1, y1, x2, y2] i := i + 1 : PROC vec.rect (MOBILE []VEC.ENTRY vecs, INT i, VAL REAL32 x, y, w, h) SEQ vecs[i][type] := VEC.RECT vecs[i][args] := [x, y, w, h] i := i + 1 : PROC vec.circle (MOBILE []VEC.ENTRY vecs, INT i, VAL REAL32 x, y, r) SEQ vecs[i][type] := VEC.CIRCLE vecs[i][args] := [x, y, r, 0.0] i := i + 1 : PROC vec.fillrect (MOBILE []VEC.ENTRY vecs, INT i, VAL REAL32 x, y, w, h) SEQ vecs[i][type] := VEC.FILLRECT vecs[i][args] := [x, y, w, h] i := i + 1 : PROC vec.fillcircle (MOBILE []VEC.ENTRY vecs, INT i, VAL REAL32 x, y, r) SEQ vecs[i][type] := VEC.FILLCIRCLE vecs[i][args] := [x, y, r, 0.0] i := i + 1 : PROC vec.text (MOBILE []VEC.ENTRY vecs, INT i, VAL REAL32 x, y, h, VAL []BYTE s) SEQ vecs[i][type] := VEC.TEXT vecs[i][args] := [x, y, h, 0.0] vecs[i][str] := [j = 0 FOR SIZE vecs[i][str] | 0] []BYTE d IS vecs[i][str]: SEQ ASSERT ((SIZE s) < ((SIZE d) - 1)) [d FROM 0 FOR SIZE s] := s i := i + 1 : PROC vec.real32 (MOBILE []VEC.ENTRY v, INT n, VAL REAL32 x, y, size, value) INT len: [20]BYTE s: SEQ course.REAL32TOSTRING (len, s, value, 4, 2) vec.text (v, n, x, y, size, [s FOR len]) : PROC vec.stop (MOBILE []VEC.ENTRY vecs, INT i) SEQ vecs[i][type] := VEC.STOP i := i + 1 : PROC vec.clear (MOBILE []VEC.ENTRY vecs, INT i) SEQ vecs[i][type] := VEC.CLEAR i := i + 1 :