12 static bool buttondown
; /* is left button down */
13 static short mousex
, mousey
;
14 static enum BezPtEnum selbezpt
; /* selected bez pt */
16 void DrawBox( int, int, int);
17 void DrawSqr( int, int, int);
18 void EditStartPt(int, int);
19 void EditEndPt(int, int);
21 void HandleTicks(mesg
)
22 struct IntuiMessage
*mesg
;
26 x
= CntrX(mesg
->MouseX
);
27 y
= CntrY(mesg
->MouseY
);
29 if(!buttondown
|| (mousex
== x
&& mousey
== y
)){
39 EditBezPt( mousex
, mousey
);
45 EditStartPt(mousex
, mousey
);
49 EditEndPt(mousex
, mousey
);
53 EditControl0(mousex
, mousey
);
57 EditControl1(mousex
, mousey
);
69 void HandleMButtons(mesg
)
70 struct IntuiMessage
*mesg
;
73 long startdist
, enddist
, leftdist
, rightdist
;
76 mousex
= CntrX(mesg
->MouseX
);
77 mousey
= CntrY(mesg
->MouseY
);
81 buttondown
= true; /* down */
85 InitBezPt( mousex
, mousey
);
86 if( GetNumSegs() == 0 ) {
87 InitBezPt( mousex
, mousey
);
92 tx
= mousex
- StartPtX(GetCurSeg());
93 ty
= mousey
- StartPtY(GetCurSeg());
94 startdist
= tx
* tx
+ ty
* ty
;
96 tx
= mousex
- EndPtX(GetCurSeg());
97 ty
= mousey
- EndPtY(GetCurSeg());
98 enddist
= tx
* tx
+ ty
* ty
;
100 tx
= mousex
- Cntrl1X(GetCurSeg());
101 ty
= mousey
- Cntrl1Y(GetCurSeg());
102 leftdist
= tx
* tx
+ ty
* ty
;
104 tx
= mousex
- Cntrl2X(GetCurSeg());
105 ty
= mousey
- Cntrl2Y(GetCurSeg());
106 rightdist
= tx
*tx
+ ty
* ty
;
108 if( leftdist
<= rightdist
&&
109 leftdist
<= startdist
&&
110 leftdist
<= enddist
) {
111 selbezpt
= BPECntrlPt1
;
112 EditControl0( mousex
, mousey
);
114 else if ( rightdist
<= startdist
&&
115 rightdist
<= enddist
) {
116 selbezpt
= BPECntrlPt2
;
117 EditControl1( mousex
, mousey
);
119 else if ( startdist
<= enddist
) {
120 selbezpt
= BPEStartPt
;
121 EditStartPt(mousex
, mousey
);
125 EditEndPt(mousex
, mousey
);
136 buttondown
= false; /* up */
140 if( CurMode
== FITBEZIER
) {