From d1a8285f818eb7e5c3d6a05709ea21a808490b8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Mon, 19 Mar 2018 19:55:58 +0100 Subject: New upstream version 5.1.0 --- app/bin/cjoin.c | 105 +++++++++++++++++++++++++++----------------------------- 1 file changed, 51 insertions(+), 54 deletions(-) (limited to 'app/bin/cjoin.c') diff --git a/app/bin/cjoin.c b/app/bin/cjoin.c index e8d72eb..8cfa3d4 100644 --- a/app/bin/cjoin.c +++ b/app/bin/cjoin.c @@ -29,7 +29,15 @@ #include "ccurve.h" #include "cstraigh.h" #include "cjoin.h" +#include "ccornu.h" #include "i18n.h" +#include "utility.h" +#include "math.h" +#include "messages.h" +#include "param.h" +#include "cundo.h" +#include "cselect.h" +#include "fileio.h" static int log_join = 0; @@ -444,18 +452,25 @@ static STATUS_T CmdJoin( DIST_T eR[2]; BOOL_T ok; - switch (action) { + switch (action&0xFF) { case C_START: - InfoMessage( _("Left click - join with track, Shift Left click - move to join") ); + if (selectedTrackCount==0) + InfoMessage( _("Left click - join with track") ); + else + InfoMessage( _("Left click - join with track, Shift Left click - move to join") ); Dj.state = 0; Dj.joinMoveState = 0; /*ParamGroupRecord( &easementPG );*/ + if (easementVal < 0) + return CmdCornu(action, pos); return C_CONTINUE; case C_DOWN: if ( (Dj.state == 0 && (MyGetKeyState() & WKEY_SHIFT) != 0) || Dj.joinMoveState != 0 ) return DoMoveToJoin( pos ); + if (easementVal < 0.0) + return CmdCornu(action, pos); DYNARR_SET( trkSeg_t, tempSegs_da, 3 ); tempSegs(0).color = drawColorBlack; @@ -545,6 +560,8 @@ LOG( log_join, 1, ("P1=[%0.3f %0.3f]\n", pos.x, pos.y ) ) tempSegs_da.cnt = 0; case C_MOVE: + if (easementVal < 0) + return CmdCornu(action, pos); LOG( log_join, 3, ("P1=[%0.3f %0.3f]\n", pos.x, pos.y ) ) if (Dj.state != 2) @@ -580,6 +597,8 @@ LOG( log_join, 3, ("P1=[%0.3f %0.3f]\n", pos.x, pos.y ) ) ((Dj.inp[0].params.ep==0)?-90.0:90.0) ); break; case curveTypeNone: + case curveTypeBezier: + case curveTypeCornu: break; } @@ -655,6 +674,11 @@ LOG( log_join, 3, (" -E POS0=[%0.3f %0.3f] POS1=[%0.3f %0.3f]\n", d = Dj.inp[0].params.arcR * a1 * 2.0*M_PI/360.0; } break; + case curveTypeCornu: + case curveTypeBezier: + case curveTypeNone: + InfoMessage( _("First Track Type not supported for non-Cornu Join") ); + goto errorReturn; default: AbortProg( "cmdJoin - unknown type[0]" ); } @@ -682,6 +706,11 @@ LOG( log_join, 3, (" -E POS0=[%0.3f %0.3f] POS1=[%0.3f %0.3f]\n", d = Dj.inp[1].params.arcR * a1 * 2.0*M_PI/360.0; } break; + case curveTypeCornu: + case curveTypeBezier: + case curveTypeNone: + InfoMessage( _("Second Track Type not supported for non-Cornu Join") ); + goto errorReturn; default: AbortProg( "cmdJoin - unknown type[1]" ); } @@ -775,8 +804,13 @@ errorReturn: return C_CONTINUE; case C_UP: - if (Dj.state == 0) - return C_CONTINUE; + + if (Dj.state == 0) { + if (easementVal<0) + return CmdCornu(action, pos); + else + return C_CONTINUE; + } if (Dj.state == 1) { InfoMessage( _("Select 2nd track") ); return C_CONTINUE; @@ -801,6 +835,8 @@ errorReturn: Dj.jRes.arcA0, Dj.jRes.arcA1, 0 ); break; case curveTypeNone: + case curveTypeBezier: + case curveTypeCornu: return C_CONTINUE; } @@ -822,65 +858,26 @@ errorReturn: DrawNewTrack( trk ); return rc; -#ifdef LATER - case C_LCLICK: - if ( (MyGetKeyState() & WKEY_SHIFT) == 0 ) { - rc = CmdJoin( C_DOWN, pos ); - if (rc == C_TERMINATE) - return rc; - return CmdJoin( C_UP, pos ); - } - if ( selectedTrackCount <= 0 ) { - ErrorMessage( MSG_NO_SELECTED_TRK ); - return C_CONTINUE; - } - if ( (Dj.inp[Dj.joinMoveState].trk = OnTrack( &pos, TRUE, TRUE )) == NULL ) - return C_CONTINUE; - if (!CheckTrackLayer( Dj.inp[Dj.joinMoveState].trk ) ) - return C_CONTINUE; - Dj.inp[Dj.joinMoveState].params.ep = PickUnconnectedEndPoint( pos, Dj.inp[Dj.joinMoveState].trk ); /* CHECKME */ - if ( Dj.inp[Dj.joinMoveState].params.ep == -1 ) { -#ifdef LATER - ErrorMessage( MSG_NO_ENDPTS ); -#endif - return C_CONTINUE; - } -#ifdef LATER - if ( GetTrkEndTrk( Dj.inp[Dj.joinMoveState].trk, Dj.inp[Dj.joinMoveState].params.ep ) ) { - ErrorMessage( MSG_SEL_EP_CONN ); - return C_CONTINUE; - } -#endif - if (Dj.joinMoveState == 0) { - Dj.joinMoveState++; - InfoMessage( GetTrkSelected(Dj.inp[0].trk)? - _("Click on an unselected End-Point"): - _("Click on a selected End-Point") ); - return C_CONTINUE; - } - if ( GetTrkSelected(Dj.inp[0].trk) == GetTrkSelected(Dj.inp[1].trk) ) { - ErrorMessage( MSG_2ND_TRK_NOT_SEL_UNSEL, GetTrkSelected(Dj.inp[0].trk) - ? _("unselected") : _("selected") ); - return C_CONTINUE; - } - if (GetTrkSelected(Dj.inp[0].trk)) - MoveToJoin( Dj.inp[0].trk, Dj.inp[0].params.ep, Dj.inp[1].trk, Dj.inp[1].params.ep ); - else - MoveToJoin( Dj.inp[1].trk, Dj.inp[1].params.ep, Dj.inp[0].trk, Dj.inp[0].params.ep ); - Dj.joinMoveState = 0; - return C_TERMINATE; - break; -#endif case C_CANCEL: case C_REDRAW: + + if ( Dj.joinMoveState == 1 || Dj.state == 1 ) { DrawFillCircle( &tempD, Dj.inp[0].pos, 0.10*mainD.scale, selectedColor ); - } + } else if (easementVal<0 ) + return CmdCornu(action,pos); + DrawSegs( &tempD, zero, 0.0, &tempSegs(0), tempSegs_da.cnt, trackGauge, wDrawColorBlack ); break; + case C_TEXT: + case C_OK: + if (easementVal<0 ) + return CmdCornu(action,pos); } + + return C_CONTINUE; } -- cgit v1.2.3