Linking: /cs/lib/libquickdraw.a /cs/lib/libmquickdraw (for lowercase pascal syntax)
type Point = record x, y : integer; end; Rect = record top : integer; left : integer; bottom : integer; right : integer; end; Polygon = record num_vertices : integer; vertices : ^Point; end;
typedef struct { int x, y; } Point; typedef struct { int top, left, bottom, right; } Rect; typedef struct { int num_vertices; Point *vertices; } Polygon;
procedure InitDraw(width, height : integer); external c; procedure InitDraw4(width, height, x, y : integer); external c; procedure ClearAll; external c; procedure DrawGrid(spacing : integer) ; external c; procedure GetDrawingRect(var r : Rect); external c; procedure QuitDraw; external c; procedure SetPt(var pt : Point; x, y : integer); external c; procedure SetRect(var rect : Rect; left, top, right, bottom : integer); external c; procedure OffsetRect(var rect : Rect; dh, dv : integer);external c; procedure InsetRect(var rect : Rect; dh, dv : integer);external c; function PtInRect(point : Point; rect : Rect): boolean;external c; procedure SetColor(color : Colors) ;external c; procedure PenPat(pat : Patterns) ;external c; function Random:integer;external c; procedure Randomize(seed : integer); external c; procedure WaitDraw(t:integer);external c; function Button: Boolean;external c; procedure GetMouse(var x, y : integer); external c; procedure GetMousePt(var pt : Point); external c; procedure SetLineWidth(lineWidth : integer);external c; procedure GetLineWidth(var lineWidth : integer);external c; procedure SetLineStyle(style : LineStyles);external c; procedure GetLineStyle(var style: LineStyles);external c; procedure PenMode(mode : PenModes);external c; procedure GetPenMode(var mode : PenModes);external c; procedure SetFont(font : Fonts);external c; procedure GetFont(var font : Fonts);external c; procedure DrawLine(p1, p2 : Point);external c; procedure EraseLine(p1, p2 : Point);external c; procedure FrameRect(rect : Rect);external c; procedure PaintRect(rect : Rect);external c; procedure InvertRect(rect : Rect);external c; procedure EraseRect(rect : Rect);external c; procedure FrameOval(rect : Rect);external c; procedure PaintOval(rect : Rect);external c; procedure InvertOval(rect : Rect);external c; procedure EraseOval(rect : Rect);external c; procedure FrameArc(rect: Rect; start, ending : integer);external c; procedure PaintArc(rect: Rect; start, ending : integer);external c; procedure InvertArc(rect: Rect; start, ending : integer);external c; procedure EraseArc(rect: Rect; start, ending : integer);external c; procedure PaintCircle(x , y, radius : integer); external c; procedure FrameCircle(x , y, radius : integer); external c; procedure EraseCircle(x , y, radius : integer); external c; procedure DrawString(s : string; x, y : integer);external c; procedure QueryStringSize(s : string; var width, height : integer);external c; procedure MoveTo(x, y : integer); external c; procedure LineTo(x, y : integer); external c; function CreatePoly: Polygon; external c; function CopyPoly(poly: Polygon) : Polygon; external c; procedure PolyAddPt(var poly : Polygon; x, y: integer); external c; procedure PolyQueryPt(poly : Polygon; index : integer; var x, y : integer); external c; procedure FramePoly(poly : Polygon); external c; procedure ErasePoly(poly : Polygon); external c; procedure PaintPoly(poly : Polygon); external c; procedure InsetPoly(var poly: Polygon; dx, dy : integer); external c; procedure OffsetPoly(var poly: Polygon; dx, dy: integer); external c;
extern void QDclose(); extern void QDreset(); extern void QDopen(); extern void QDallowKeypress(); extern void InitDraw(); extern void InitDraw4(); extern void ClearAll(); extern void QuitDraw(); extern void GetDrawingRect(); extern void DrawGrid(); extern void SetErrorHandler(); extern int Random(); extern void Randomize(); extern void WaitDraw(); extern Boolean Button(); extern void GetMouse(); extern void GetMousePt(); extern void SetLineWidth(); extern void GetLineWidth(); extern void SetLineStyle(); extern void GetLineStyle(); extern void PenMode(); extern void GetPenMode(); extern void SetFont(); extern void GetFont(); extern void DrawLine(); extern void EraseLine(); extern void FrameRect(); extern void PaintRect(); extern void EraseRect(); extern void InvertRect(); extern void FrameOval(); extern void PaintOval(); extern void EraseOval(); extern void InvertOval(); extern void FrameArc(); extern void PaintArc(); extern void EraseArc(); extern void InvertArc(); extern void EraseCircle(); extern void PaintCircle(); extern void FrameCircle(); extern void DrawString(); extern void QueryStringSize(); extern void SetRect(); extern void SetPt(); extern void OffsetRect(); extern void InRect(); extern Boolean PtInRect(); extern void SetColor(); extern void PenPat(); extern void LineTo(); extern void MoveTo(); extern Polygon CreatePoly(); extern Polygon CopyPoly(); extern void PolyAddPt(); extern void PolyQueryPt(); extern void FramePoly(); extern void PaintPoly(); extern void ErasePoly(); extern void InsetPoly(); extern void OffsetPoly();
1) Call QuickDraw routines without InitDraw (initilizing). 2) Call QuitDraw when no InitDraw precedes it. 3) Try to REinitilize QuickDraw. (InitDraw in succession) 4) Try to use/create a Rect that is illegal. 5) Send bad paramaters to the Set procedures.