diff options
author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2024-11-14 19:35:45 +0100 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2024-11-14 19:35:45 +0100 |
commit | df5520aa2dae5b3ce7abf8733dcdd152898af163 (patch) | |
tree | 00d3047bfb14f682bfb5a21010c731ed649bfed7 /app/bin/celev.c | |
parent | df247efec654e512242e4f4f1b0212034f9e01fe (diff) | |
parent | ec3c0f6f6e7153fa797dc57a0e95779cbc63a23b (diff) |
Merge branch 'release/debian/1_5.3.0GA-1'debian/1_5.3.0GA-1
Diffstat (limited to 'app/bin/celev.c')
-rw-r--r-- | app/bin/celev.c | 293 |
1 files changed, 161 insertions, 132 deletions
diff --git a/app/bin/celev.c b/app/bin/celev.c index 1da4b22..e55a1fe 100644 --- a/app/bin/celev.c +++ b/app/bin/celev.c @@ -17,20 +17,16 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include <math.h> -#include <string.h> #include "cselect.h" #include "cundo.h" #include "custom.h" #include "fileio.h" -#include "i18n.h" #include "param.h" #include "track.h" #include "ccurve.h" -#include "utility.h" static wWin_p elevW; @@ -44,7 +40,8 @@ static EPINX_T elevEp; static BOOL_T elevUndo = FALSE; static char * elevModeLabels[] = { N_("None"), N_("Defined"), N_("Hidden"), - N_("Computed"), N_("Grade"), N_("Station"), N_("Ignore"), NULL }; + N_("Computed"), N_("Grade"), N_("Station"), N_("Ignore"), NULL + }; static paramFloatRange_t r_1000_1000 = { -1000, 1000 }; static paramData_t elevationPLs[] = { @@ -53,41 +50,44 @@ static paramData_t elevationPLs[] = { #define I_HEIGHT (1) { PD_FLOAT, &elevHeightV, "value", PDO_DIM|PDO_DLGNEWCOLUMN, &r_1000_1000 }, #define I_COMPUTED (2) - { PD_MESSAGE, NULL, "computed", 0, (void*)80 }, + { PD_MESSAGE, NULL, "computed", 0, I2VP(80) }, #define I_GRADE (3) - { PD_MESSAGE, NULL, "grade", 0, (void*)80 }, + { PD_MESSAGE, NULL, "grade", 0, I2VP(80) }, #define I_STATION (4) - { PD_STRING, elevStationV, "station", PDO_DLGUNDERCMDBUTT|PDO_STRINGLIMITLENGTH, (void*)200, NULL, 0, 0, sizeof(elevStationV)} }; -static paramGroup_t elevationPG = { "elev", 0, elevationPLs, sizeof elevationPLs/sizeof elevationPLs[0] }; + { PD_STRING, elevStationV, "station", PDO_DLGUNDERCMDBUTT|PDO_STRINGLIMITLENGTH, I2VP(200), NULL, 0, 0, sizeof(elevStationV)} +}; +static paramGroup_t elevationPG = { "elev", 0, elevationPLs, COUNT( elevationPLs ) }; static dynArr_t anchors_da; #define anchors(N) DYNARR_N(trkSeg_t,anchors_da,N) -static void CreateSquareAnchor(coOrd p) { +static void CreateSquareAnchor(coOrd p) +{ DIST_T d = tempD.scale*0.25; int i = anchors_da.cnt; DYNARR_SET(trkSeg_t,anchors_da,i+4); - for (int j =0; j<4;j++) { + for (int j =0; j<4; j++) { anchors(i+j).type = SEG_STRLIN; anchors(i+j).color = wDrawColorBlue; - anchors(i+j).width = 0; + anchors(i+j).lineWidth = 0; } anchors(i).u.l.pos[0].x = anchors(i+2).u.l.pos[1].x = - anchors(i+3).u.l.pos[0].x = anchors(i+3).u.l.pos[1].x = p.x-d/2; + anchors(i+3).u.l.pos[0].x = anchors(i+3).u.l.pos[1].x = p.x-d/2; anchors(i).u.l.pos[0].y = anchors(i).u.l.pos[1].y = - anchors(i+1).u.l.pos[0].y = anchors(i+3).u.l.pos[1].y = p.y-d/2; + anchors(i+1).u.l.pos[0].y = anchors(i+3).u.l.pos[1].y = p.y-d/2; anchors(i).u.l.pos[1].x = - anchors(i+1).u.l.pos[0].x = anchors(i+1).u.l.pos[1].x = - anchors(i+2).u.l.pos[0].x = p.x+d/2; + anchors(i+1).u.l.pos[0].x = anchors(i+1).u.l.pos[1].x = + anchors(i+2).u.l.pos[0].x = p.x+d/2; anchors(i+1).u.l.pos[1].y = - anchors(i+2).u.l.pos[0].y = anchors(i+2).u.l.pos[1].y = - anchors(i+3).u.l.pos[0].y = p.y+d/2; + anchors(i+2).u.l.pos[0].y = anchors(i+2).u.l.pos[1].y = + anchors(i+3).u.l.pos[0].y = p.y+d/2; } -static void CreateEndAnchor(coOrd p, wBool_t lock) { +static void CreateEndAnchor(coOrd p, wBool_t lock) +{ DIST_T d = tempD.scale*0.15; DYNARR_APPEND(trkSeg_t,anchors_da,1); @@ -98,11 +98,12 @@ static void CreateEndAnchor(coOrd p, wBool_t lock) { anchors(i).u.c.radius = d/2; anchors(i).u.c.a0 = 0.0; anchors(i).u.c.a1 = 360.0; - anchors(i).width = 0; + anchors(i).lineWidth = 0; } -static void CreateSplitAnchor(coOrd pos, track_p t) { - DIST_T d = tempD.scale*0.1; +static void CreateSplitAnchor(coOrd pos, track_p t) +{ +// DIST_T d = tempD.scale*0.1; DIST_T w = tempD.scale/tempD.dpi*4; int i; ANGLE_T a = NormalizeAngle(GetAngleAtPoint(t,pos,NULL,NULL)+90.0); @@ -112,31 +113,37 @@ static void CreateSplitAnchor(coOrd pos, track_p t) { anchors(i).color = wDrawColorBlue; Translate(&anchors(i).u.l.pos[0],pos,a,GetTrkGauge(t)); Translate(&anchors(i).u.l.pos[1],pos,a,-GetTrkGauge(t)); - anchors(i).width = w; + anchors(i).lineWidth = w; } -void static CreateMoveAnchor(coOrd pos) { +#if 0 +void static CreateMoveAnchor(coOrd pos) +{ DYNARR_SET(trkSeg_t,anchors_da,anchors_da.cnt+5); - DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),pos,0,TRUE,wDrawColorBlue); + DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),pos,0,TRUE, + wDrawColorBlue); DYNARR_SET(trkSeg_t,anchors_da,anchors_da.cnt+5); - DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),pos,90,TRUE,wDrawColorBlue); + DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),pos,90,TRUE, + wDrawColorBlue); DYNARR_APPEND(trkSeg_t,anchors_da,1); CreateSquareAnchor(pos); } +#endif static void LayoutElevW( - paramData_t * pd, - int inx, - wPos_t colX, - wPos_t * x, - wPos_t * y ) + paramData_t * pd, + int inx, + wWinPix_t colX, + wWinPix_t * x, + wWinPix_t * y ) { - static wPos_t h = 0; + static wWinPix_t h = 0; switch ( inx ) { case I_HEIGHT: - h = wControlGetHeight( elevationPLs[I_MODE].control )/((sizeof elevModeLabels/sizeof elevModeLabels[0])-1); + h = wControlGetHeight( elevationPLs[I_MODE].control )/(COUNT( + elevModeLabels )-1); #ifndef WINDOWS h += 3; #endif @@ -157,8 +164,9 @@ static int GetElevMode( void ) int newMode; static int modeMap[7] = { ELEV_NONE, ELEV_DEF|ELEV_VISIBLE, ELEV_DEF, ELEV_COMP|ELEV_VISIBLE, ELEV_GRADE|ELEV_VISIBLE, ELEV_STATION|ELEV_VISIBLE, ELEV_IGNORE }; mode = (int)elevModeV; - if (mode<0||mode>=7) + if (mode<0||mode>=7) { return -1; + } newMode = modeMap[mode]; return newMode; } @@ -172,8 +180,9 @@ static void DoElevUpdate( paramGroup_p pg, int inx, void * valueP ) if ( inx == 0 ) { long mode = *(long*)valueP; - if ( mode < 0 || mode >= 7 ) + if ( mode < 0 || mode >= 7 ) { return; + } ParamControlActive( &elevationPG, I_HEIGHT, FALSE ); ParamControlActive( &elevationPG, I_STATION, FALSE ); switch ( mode ) { @@ -194,23 +203,28 @@ static void DoElevUpdate( paramGroup_p pg, int inx, void * valueP ) } ParamLoadData( &elevationPG ); newMode = GetElevMode(); - if (newMode == -1) + if (newMode == -1) { return; - if (elevTrk == NULL) + } + if (elevTrk == NULL) { return; + } oldMode = GetTrkEndElevUnmaskedMode( elevTrk, elevEp ); elevNewValue = 0.0; - if ((newMode&ELEV_MASK) == ELEV_DEF) + if ((newMode&ELEV_MASK) == ELEV_DEF) { elevNewValue = elevHeightV; + } if (oldMode == newMode) { if ((newMode&ELEV_MASK) == ELEV_DEF) { elevOldValue = GetTrkEndElevHeight( elevTrk, elevEp ); diff = fabs( elevOldValue-elevNewValue ); - if ( diff < 0.02 ) + if ( diff < 0.02 ) { return; + } } else if ((newMode&ELEV_MASK) == ELEV_STATION) { - if ( strcmp(elevStationV, GetTrkEndElevStation( elevTrk, elevEp ) ) == 0) + if ( strcmp(elevStationV, GetTrkEndElevStation( elevTrk, elevEp ) ) == 0) { return; + } } else { return; } @@ -243,7 +257,6 @@ static void ElevSelect( track_p trk, EPINX_T ep ) int mode; DIST_T elevX, grade, elev, dist; long radio; - BOOL_T computedOk; BOOL_T gradeOk = TRUE; track_p trk1; EPINX_T ep1; @@ -266,10 +279,11 @@ static void ElevSelect( track_p trk, EPINX_T ep ) radio = 0; break; case ELEV_DEF: - if ( mode & ELEV_VISIBLE ) + if ( mode & ELEV_VISIBLE ) { radio = 1; - else + } else { radio = 2; + } elevHeightV = GetTrkEndElevHeight(trk,ep); elevOldValue = elevHeightV; ParamLoadControl( &elevationPG, I_HEIGHT ); @@ -296,69 +310,61 @@ static void ElevSelect( track_p trk, EPINX_T ep ) elevModeV = radio; ParamLoadControl( &elevationPG, I_MODE ); gradeOk = ComputeElev( trk, ep, FALSE, &elevX, &grade, TRUE ); - computedOk = TRUE; - if (oldElevationEvaluation || computedOk) { - sprintf( message, "%0.2f%s", round(PutDim( elevX )*100.0)/100.0, (units==UNITS_METRIC?"cm":"\"") ); - ParamLoadMessage( &elevationPG, I_COMPUTED, message ); - if (gradeOk) { - sprintf( message, "%0.1f%%", fabs(round(grade*1000.0)/10.0) ); - } else { - if ( EndPtIsDefinedElev(trk,ep) ) { - elev = GetElevation(trk); - dist = GetTrkLength(trk,ep,-1); - if (dist>0.1) - sprintf( message, "%0.1f%%", fabs(round((elev-elevX)/dist)*1000.0)/10.0 ); - else - sprintf( message, _("Undefined") ); - if ( (trk1=GetTrkEndTrk(trk,ep)) && (ep1=GetEndPtConnectedToMe(trk1,trk))>=0 ) { - elev = GetElevation(trk1); - dist = GetTrkLength(trk1,ep1,-1); - if (dist>0.1) - sprintf( message+strlen(message), " - %0.1f%%", fabs(round((elev-elevX)/dist)*1000.0)/10.0 ); - else - sprintf( message+strlen(message), " - %s", _("Undefined") ); - } + sprintf( message, "%0.2f%s", round(PutDim( elevX )*100.0)/100.0, + (units==UNITS_METRIC?"cm":"\"") ); + ParamLoadMessage( &elevationPG, I_COMPUTED, message ); + if (gradeOk) { + sprintf( message, "%0.1f%%", fabs(round(grade*1000.0)/10.0) ); + } else { + if ( EndPtIsDefinedElev(trk,ep) ) { + elev = GetElevation(trk); + dist = GetTrkLength(trk,ep,-1); + if (dist>0.1) { + sprintf( message, "%0.1f%%", fabs(round(((elev-elevX)/dist)*1000.0))/10.0 ); } else { - strcpy( message, _("Undefined") ); + sprintf( message, _("Undefined") ); } + if ( (trk1=GetTrkEndTrk(trk,ep)) && (ep1=GetEndPtConnectedToMe(trk1,trk))>=0 ) { + elev = GetElevation(trk1); + dist = GetTrkLength(trk1,ep1,-1); + if (dist>0.1) { + sprintf( message+strlen(message), " - %0.1f%%", + fabs(round(((elev-elevX)/dist)*1000.0))/10.0 ); + } else { + sprintf( message+strlen(message), " - %s", _("Undefined") ); + } + } + } else { + strcpy( message, _("Undefined") ); } - ParamLoadMessage( &elevationPG, I_GRADE, message ); - if ( (mode&ELEV_MASK)!=ELEV_DEF ) { - elevHeightV = elevX; - ParamLoadControl( &elevationPG, I_HEIGHT ); - } + } + ParamLoadMessage( &elevationPG, I_GRADE, message ); + if ( (mode&ELEV_MASK)!=ELEV_DEF ) { + elevHeightV = elevX; + ParamLoadControl( &elevationPG, I_HEIGHT ); } wShow(elevW); } -static BOOL_T GetPointElev(track_p trk, coOrd pos, DIST_T * height) { - DIST_T len, len1, elev0, elev1, dist0, dist1; +static BOOL_T GetPointElev(track_p trk, coOrd pos, DIST_T * height) +{ + DIST_T elev0, elev1, dist0, dist1; if ( IsTrack( trk ) && GetTrkEndPtCnt(trk) == 2 ) { + if ( GetTrkLength( trk, 0, 1 ) < 0.1 ) { + return FALSE; + } dist0 = FindDistance(pos,GetTrkEndPos(trk,0)); dist1 = FindDistance(pos,GetTrkEndPos(trk,1)); - if (EndPtIsDefinedElev(trk,0)) - elev0 = GetTrkEndElevHeight(trk,0); - else { - if (!GetTrkEndElevCachedHeight(trk,0,&elev0,&len)) { - if (GetTrkLength( trk, 0, 1 )<0.1) return FALSE; - ComputeElev( trk, 0, FALSE, &elev0, NULL, TRUE ); - } - } - if (EndPtIsDefinedElev(trk,1)) - elev1 = GetTrkEndElevHeight(trk,1); - else { - if (!GetTrkEndElevCachedHeight(trk,1,&elev1,&len1)) { - if (GetTrkLength( trk, 0, 1 )<0.1) return FALSE; - ComputeElev( trk, 0, FALSE, &elev0, NULL, TRUE ); - } - } - if (dist1+dist0 < 0.1) { + ComputeElev( trk, 0, FALSE, &elev0, NULL, FALSE ); + ComputeElev( trk, 1, FALSE, &elev1, NULL, FALSE ); + if (dist1+dist0 <= 0.1) { *height = elev0; return TRUE; } *height = ((elev1-elev0)*(dist0/(dist0+dist1)))+elev0; return TRUE; - } else if (GetTrkEndPtCnt(trk) == 1 && GetTrkEndElevCachedHeight(trk,0,&elev0,&len)) { + } else if (GetTrkEndPtCnt(trk) == 1 && + ComputeElev( trk, 0, FALSE, &elev0, NULL, FALSE ) ) { *height = elev0; return TRUE; } @@ -370,12 +376,14 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos ) { track_p trk0, trk1; EPINX_T ep0; - int oldTrackCount; +// int oldTrackCount; switch (action) { case C_START: - if ( elevW == NULL ) - elevW = ParamCreateDialog( &elevationPG, MakeWindowTitle(_("Elevation")), _("Done"), DoElevDone, wHide, TRUE, LayoutElevW, 0, DoElevUpdate ); + if ( elevW == NULL ) { + elevW = ParamCreateDialog( &elevationPG, MakeWindowTitle(_("Elevation")), + _("Done"), DoElevDone, wHide, TRUE, LayoutElevW, 0, DoElevUpdate ); + } elevModeV = 0; elevHeightV = 0.0; elevStationV[0] = 0; @@ -387,7 +395,8 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos ) ParamControlActive( &elevationPG, I_STATION, FALSE ); ParamLoadMessage( &elevationPG, I_COMPUTED, "" ); ParamLoadMessage( &elevationPG, I_GRADE, "" ); - InfoMessage( _("Click on end, +Shift to split, +Ctrl to move description") ); + InfoMessage( + _("Click on end, +Shift to split, +Ctrl to move description, +Alt to show elevation") ); elevTrk = NULL; elevUndo = FALSE; CmdMoveDescription( action, pos ); @@ -396,14 +405,15 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos ) case wActionMove: DYNARR_RESET(trkSeg_t,anchors_da); if (MyGetKeyState()&WKEY_CTRL) { - commandContext = (void*) 1; //Just end points + commandContext = I2VP(1); //Just end points CmdMoveDescription( action, pos ); return C_CONTINUE; } - BOOL_T xing = FALSE; +// BOOL_T xing = FALSE; coOrd p0 = pos, p2=pos; if ((trk0 = OnTrack2(&p0,FALSE, TRUE, FALSE, NULL)) != NULL) { - EPINX_T ep0 = 0, ep1 = 1; + EPINX_T ep0 = 0; +// EPINX_T ep1 = 1; DIST_T elev0, elev1; if (GetTrkEndPtCnt(trk0) == 2) { if (!GetPointElev(trk0,p0,&elev0)) { @@ -414,49 +424,59 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos ) InfoMessage( _("Move to end or track crossing") ); return C_CONTINUE; } - if ((trk1 = OnTrack2(&p2,FALSE, TRUE, FALSE, trk0)) != NULL) { - if (IsClose(FindDistance(p0,p2))) { - if (GetEndPtConnectedToMe(trk0,trk1) == -1) { //Not simply connected to each other!!! - if (GetTrkEndPtCnt(trk1) == 2) { - if (GetPointElev(trk1,p2,&elev1)) { - if (MyGetKeyState()&WKEY_SHIFT) { - InfoMessage (_("Crossing - First %0.3f, Second %0.3f, Clearance %0.3f - Click to Split"), PutDim(elev0), PutDim(elev1), PutDim(fabs(elev0-elev1))); - } else - InfoMessage (_("Crossing - First %0.3f, Second %0.3f, Clearance %0.3f"), PutDim(elev0), PutDim(elev1), PutDim(fabs(elev0-elev1))); + if (((MyGetKeyState()&WKEY_ALT))) { //Add square with Alt + if ((trk1 = OnTrack2(&p2,FALSE, TRUE, FALSE, trk0)) != NULL) { + if (IsClose(FindDistance(p0,p2))) { + if (GetEndPtConnectedToMe(trk0, + trk1) == -1) { //Not simply connected to each other!!! + if (GetTrkEndPtCnt(trk1) == 2) { + if (GetPointElev(trk1,p2,&elev1)) { + if (MyGetKeyState()&WKEY_SHIFT) { + InfoMessage ( + _("Crossing - First %0.3f, Second %0.3f, Clearance %0.3f - Click to Split"), + PutDim(elev0), PutDim(elev1), PutDim(fabs(elev0-elev1))); + } else { + InfoMessage (_("Crossing - First %0.3f, Second %0.3f, Clearance %0.3f"), + PutDim(elev0), PutDim(elev1), PutDim(fabs(elev0-elev1))); + } + } + CreateSquareAnchor(p2); + return C_CONTINUE; } - CreateSquareAnchor(p2); - return C_CONTINUE; } } } } if ((ep0 = PickEndPoint( p0, trk0 )) != -1) { - if (IsClose(FindDistance(GetTrkEndPos(trk0,ep0),pos))) { - CreateEndAnchor(GetTrkEndPos(trk0,ep0),FALSE); - InfoMessage (_("Track End elevation %0.3f"), PutDim(elev0)); - } else if ((MyGetKeyState()&WKEY_SHIFT) && QueryTrack(trk0,Q_MODIFY_CAN_SPLIT) - && !(QueryTrack(trk0,Q_IS_TURNOUT))) { + if ((MyGetKeyState()&WKEY_SHIFT) && QueryTrack(trk0,Q_MODIFY_CAN_SPLIT) + && !(QueryTrack(trk0,Q_IS_TURNOUT))) { InfoMessage( _("Click to split here - elevation %0.3f"), PutDim(elev0)); CreateSplitAnchor(p0,trk0); - } else { - InfoMessage( _("Track Point elevation %0.3f"), PutDim(elev0)); + } else if ((IsClose(FindDistance(GetTrkEndPos(trk0,ep0),p0)) + || (FindDistance(GetTrkEndPos(trk0,ep0),p0)<minLength))) { + CreateEndAnchor(GetTrkEndPos(trk0,ep0),FALSE); + InfoMessage (_("Track End elevation %0.3f - snap End Pt"), PutDim(elev0)); + } else if (MyGetKeyState()&WKEY_ALT) { CreateEndAnchor(p0,TRUE); + InfoMessage (_("Track End elevation %0.3f"), PutDim(elev0)); } - } else InfoMessage( _("Click on end, +Shift to split, +Ctrl to move description") ); - } else - InfoMessage( _("Click on end, +Shift to split, +Ctrl to move description") ); + } else { InfoMessage( _("Click on End Pt, +Shift to split, +Ctrl to move description, +Alt show Elevation") ); } + } else { + InfoMessage( + _("Click on End Pt, +Shift to split, +Ctrl to move description, +Alt show Elevation") ); + } return C_CONTINUE; case C_DOWN: case C_MOVE: case C_UP: if (MyGetKeyState()&WKEY_CTRL) { - commandContext = (void*) 1; //Just end points + commandContext = I2VP(1); //Just end points CmdMoveDescription( action, pos ); DYNARR_RESET(trkSeg_t,anchors_da); elevTrk = NULL; return C_CONTINUE; } - /*no break*/ + /*no break*/ case C_LCLICK: ; p0= pos; @@ -466,19 +486,22 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos ) InfoMessage( _("Click on end, +Shift to split, +Ctrl to move description") ); } else { ep0 = PickEndPoint( p0, trk0 ); - if (IsClose(FindDistance(GetTrkEndPos(trk0,ep0),pos))) { - InfoMessage( _("Point selected!") ); - ElevSelect( trk0, ep0 ); - } else if ( (MyGetKeyState()&WKEY_SHIFT) ) { + if ( (MyGetKeyState()&WKEY_SHIFT) ) { UndoStart( _("Split track"), "SplitTrack( T%d[%d] )", GetTrkIndex(trk0), ep0 ); - oldTrackCount = trackCount; +// oldTrackCount = trackCount; if (!QueryTrack(trk0,Q_IS_TURNOUT) && - !SplitTrack( trk0, p0, ep0, &trk1, FALSE )) + !SplitTrack( trk0, p0, ep0, &trk1, FALSE )) { return C_CONTINUE; + } InfoMessage( _("Track split!") ); ElevSelect( trk0, ep0 ); UndoEnd(); elevUndo = FALSE; + } else if (IsClose(FindDistance(GetTrkEndPos(trk0,ep0),p0)) || + (FindDistance(GetTrkEndPos(trk0,ep0), + p0)<minLength)) { //Snap if close visually or track + InfoMessage( _("Point selected!") ); + ElevSelect( trk0, ep0 ); } } DYNARR_RESET(trkSeg_t,anchors_da); @@ -493,10 +516,14 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos ) InfoMessage( "" ); return C_TERMINATE; case C_REDRAW: + wSetCursor(mainD.d,defaultCursor); DoElevHilight( NULL ); HilightSelectedEndPt( TRUE, elevTrk, elevEp ); - if (anchors_da.cnt) - DrawSegs( &tempD, zero, 0.0, &anchors(0), anchors_da.cnt, trackGauge, wDrawColorBlack ); + DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack, + 0 ); + if (anchors_da.cnt) { + wSetCursor(mainD.d,wCursorNone); + } CmdMoveDescription( action, pos ); return C_CONTINUE; } @@ -506,11 +533,13 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos ) -#include "bitmaps/elev.xpm" +#include "bitmaps/elevation.xpm3" EXPORT void InitCmdElevation( wMenu_p menu ) { ParamRegister( &elevationPG ); - AddMenuButton( menu, CmdElevation, "cmdElevation", _("Elevation"), wIconCreatePixMap(elev_xpm), LEVEL0_50, IC_POPUP|IC_LCLICK|IC_RCLICK|IC_WANT_MOVE, ACCL_ELEVATION, NULL ); + AddMenuButton( menu, CmdElevation, "cmdElevation", _("Elevation"), + wIconCreatePixMap(elevation_xpm3[iconSize]), LEVEL0_50, + IC_POPUP|IC_LCLICK|IC_RCLICK|IC_WANT_MOVE, ACCL_ELEVATION, NULL ); } |