#include #include /* normaliser les rectangles, -> bottom > top et left < right */ void Normalize(Rect *p) { ShortInt t; if (p->bottom < p-> top) { t = p->top; p->top = p->bottom; p->bottom = t; } if (p->left > p-> right) { t = p->left; p->left = p->right; p->right = t; } } void main(void) { Rect r; Point p,q,qq; int i; /* initialisations */ InitQuickDraw(); PenSize(2,2); for (;;) { /* boucle infinie */ /* saisir le premier point */ WaitClickDown(); GetMouse(&p); SetRect(&r,p.h,p.v,p.h,p.v); /* les rectangles non encore confirmes sont gris et effacables */ PenMode(patXor); PenPat(gray); do { /* saisir l'autre coin */ GetMouse(&q); SetRect(&r,p.h,p.v,q.h,q.v); Normalize(&r); /* normaliser */ FrameRect(&r); /* tracer (en gris) */ do { /* ne rien faire tant que l'autre coin ne change pas */ GetMouse(&qq); } while (qq.h == q.h && qq.v == q.v && Button()); FrameRect(&r); /* retracer = effacer */ } while (Button()); /* le bouton est lache */ /* tracer le rectangle saisi definitivement */ PenMode(patCopy); PenPat(black); FrameRect(&r); } }