From a14a7a0ccc9de76aeab0b2e4bbf58f1a79deedc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Wed, 3 Jul 2024 10:19:30 +0200 Subject: New upstream version 5.3.0GA --- app/bin/cruler.c | 142 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 82 insertions(+), 60 deletions(-) (limited to 'app/bin/cruler.c') diff --git a/app/bin/cruler.c b/app/bin/cruler.c index eb6a77d..1ab65b2 100644 --- a/app/bin/cruler.c +++ b/app/bin/cruler.c @@ -17,7 +17,7 @@ * * 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 "cundo.h" @@ -34,21 +34,22 @@ static struct { - STATE_T state; - coOrd pos0; - coOrd pos1; - coOrd pos2; - BOOL_T isClose; - int modifyingEnd; - } An = { AN_OFF, { 0,0 }, { 0,0 } }; + STATE_T state; + coOrd pos0; + coOrd pos1; + coOrd pos2; + BOOL_T isClose; + int modifyingEnd; +} An = { AN_OFF, { 0,0 }, { 0,0 } }; -void DrawAngle(drawCmd_p d, coOrd p0, coOrd p1, coOrd p2, wDrawColor color) { +void DrawAngle(drawCmd_p d, coOrd p0, coOrd p1, coOrd p2, wDrawColor color) +{ char msg[512]; trkSeg_t seg; if ((An.state != AN_OFF) && !IsClose(FindDistance(p0,p1))) { seg.type = SEG_STRLIN; - seg.width = 0; + seg.lineWidth = 0; seg.color = wDrawColorBlack; seg.u.l.pos[0] = p0; seg.u.l.pos[1] = p1; @@ -56,7 +57,7 @@ void DrawAngle(drawCmd_p d, coOrd p0, coOrd p1, coOrd p2, wDrawColor color) { if (!(IsClose(FindDistance(p0,p2)))) { seg.type = SEG_STRLIN; - seg.width = 0; + seg.lineWidth = 0; seg.color = wDrawColorBlack; seg.u.l.pos[0] = p0; seg.u.l.pos[1] = p2; @@ -66,10 +67,11 @@ void DrawAngle(drawCmd_p d, coOrd p0, coOrd p1, coOrd p2, wDrawColor color) { ANGLE_T a = DifferenceBetweenAngles(FindAngle(p0,p1),FindAngle(p0,p2)); ANGLE_T a0; - if (a>=0) + if (a>=0) { a0 = FindAngle(p0,p1); - else + } else { a0 = FindAngle(p0,p2); + } ANGLE_T a1 = fabs(DifferenceBetweenAngles(FindAngle(p0,p1),FindAngle(p0,p2))); seg.type = SEG_CRVLIN; seg.u.c.center = p0; @@ -124,8 +126,8 @@ static STATUS_T CmdAngle( wAction_t action, coOrd pos ) case AN_FIRST: An.pos2 = pos; An.state = AN_SECOND; - InfoMessage( "Drag Angle" ); - break; + InfoMessage( "Drag Angle" ); + break; } return C_CONTINUE; @@ -133,8 +135,8 @@ static STATUS_T CmdAngle( wAction_t action, coOrd pos ) //Lock to 90 degrees with CTRL if (MyGetKeyState()&WKEY_CTRL) { ANGLE_T line_angle; - if (An.state == AN_FIRST) line_angle = 0.0; - else line_angle = FindAngle(An.pos0,An.pos1); + if (An.state == AN_FIRST) { line_angle = 0.0; } + else { line_angle = FindAngle(An.pos0,An.pos1); } DIST_T l = FindDistance(An.pos0, pos); if (!IsClose(l)) { ANGLE_T angle2 = NormalizeAngle(FindAngle(An.pos0, pos)-line_angle); @@ -144,23 +146,26 @@ static STATUS_T CmdAngle( wAction_t action, coOrd pos ) } } switch (An.state) { - case AN_FIRST: - An.pos1 = An.pos2 = pos; - break; - case AN_SECOND: - An.pos2 = pos; - break; - default:; + case AN_FIRST: + An.pos1 = An.pos2 = pos; + break; + case AN_SECOND: + An.pos2 = pos; + break; + default:; } - if (An.state == AN_FIRST) + if (An.state == AN_FIRST) { InfoMessage( "Base Angle %0.3f",FindAngle(An.pos0,An.pos1)); + } if (An.state == AN_SECOND) - InfoMessage( "Base Angle %0.3f, Relative Angle %0.3f",FindAngle(An.pos0,An.pos1), - fabs(DifferenceBetweenAngles(FindAngle(An.pos0,An.pos1),FindAngle(An.pos0,An.pos2)))); + InfoMessage( "Base Angle %0.3f, Relative Angle %0.3f",FindAngle(An.pos0, + An.pos1), + fabs(DifferenceBetweenAngles(FindAngle(An.pos0,An.pos1),FindAngle(An.pos0, + An.pos2)))); return C_CONTINUE; case C_UP: - if (An.state == AN_SECOND) return C_TERMINATE; + if (An.state == AN_SECOND) { return C_TERMINATE; } return C_CONTINUE; case C_REDRAW: @@ -182,23 +187,25 @@ static STATUS_T CmdAngle( wAction_t action, coOrd pos ) } STATUS_T ModifyProtractor( - wAction_t action, - coOrd pos ) + wAction_t action, + coOrd pos ) { switch (action&0xFF) { case C_DOWN: An.modifyingEnd = -1; An.isClose = FALSE; - if ( An.state == AN_OFF ) + if ( An.state == AN_OFF ) { return C_ERROR; + } if ( IsClose(FindDistance( pos, An.pos0 ))) { An.modifyingEnd = 0; } else if ( IsClose(FindDistance( pos, An.pos1 ))) { An.modifyingEnd = 1; } else if ( IsClose(FindDistance( pos, An.pos2 ))) { An.modifyingEnd = 2; - } else + } else { return C_ERROR; + } break; case C_MOVE: if ( An.modifyingEnd == 0 ) { @@ -208,21 +215,25 @@ STATUS_T ModifyProtractor( } else if (An.modifyingEnd == 2) { An.pos2 = pos; } - InfoMessage( "Base Angle %0.3f, Relative Angle %0.3f",FindAngle(An.pos0,An.pos1), - fabs(DifferenceBetweenAngles(FindAngle(An.pos0,An.pos1),FindAngle(An.pos0,An.pos2)))); + InfoMessage( "Base Angle %0.3f, Relative Angle %0.3f",FindAngle(An.pos0, + An.pos1), + fabs(DifferenceBetweenAngles(FindAngle(An.pos0,An.pos1),FindAngle(An.pos0, + An.pos2)))); return C_CONTINUE; case C_UP: return C_CONTINUE; case C_REDRAW: - DrawAngle( &tempD, An.pos0, An.pos1, An.pos2, An.isClose?wDrawColorBlue:wDrawColorBlack ); + DrawAngle( &tempD, An.pos0, An.pos1, An.pos2, + An.isClose?wDrawColorBlue:wDrawColorBlack ); break; case wActionMove: if ( IsClose(FindDistance( pos, An.pos0 )) || - IsClose(FindDistance( pos, An.pos1 )) || - IsClose(FindDistance( pos, An.pos2 )) ) { + IsClose(FindDistance( pos, An.pos1 )) || + IsClose(FindDistance( pos, An.pos2 )) ) { An.isClose = TRUE; - } else + } else { An.isClose = FALSE; + } break; default: return C_ERROR; @@ -246,25 +257,29 @@ STATUS_T ModifyProtractor( #define DR_ON (1) static struct { - STATE_T state; - coOrd pos0; - coOrd pos1; - BOOL_T isClose; - int modifyingEnd; - } Dr = { DR_OFF, { 0,0 }, { 0,0 } }; + STATE_T state; + coOrd pos0; + coOrd pos1; + BOOL_T isClose; + int modifyingEnd; +} Dr = { DR_OFF, { 0,0 }, { 0,0 } }; void RulerRedraw( BOOL_T demo ) { - if (programMode == MODE_TRAIN) return; - if (Dr.state == DR_ON) - DrawRuler( &tempD, Dr.pos0, Dr.pos1, 0.0, TRUE, TRUE, Dr.isClose?wDrawColorBlue:wDrawColorBlack ); + if (programMode == MODE_TRAIN) { return; } + if (Dr.state == DR_ON) { + DrawRuler( &tempD, Dr.pos0, Dr.pos1, 0.0, TRUE, TRUE, + Dr.isClose?wDrawColorBlue:wDrawColorBlack ); + } if (demo) { Dr.state = DR_OFF; An.state = AN_OFF; } - if (An.state != AN_OFF) - DrawAngle( &tempD, An.pos0, An.pos1, An.pos2, An.isClose?wDrawColorBlue:wDrawColorBlack); + if (An.state != AN_OFF) { + DrawAngle( &tempD, An.pos0, An.pos1, An.pos2, + An.isClose?wDrawColorBlue:wDrawColorBlack); + } } @@ -304,7 +319,8 @@ static STATUS_T CmdRuler( wAction_t action, coOrd pos ) DrawHighlightBoxes(FALSE,FALSE,NULL); HighlightSelectedTracks(NULL, TRUE, TRUE); if (Dr.state == DR_ON) { - DrawRuler( &tempD, Dr.pos0, Dr.pos1, 0.0, TRUE, TRUE, Dr.isClose?wDrawColorBlue:wDrawColorBlack ); + DrawRuler( &tempD, Dr.pos0, Dr.pos1, 0.0, TRUE, TRUE, + Dr.isClose?wDrawColorBlue:wDrawColorBlack ); } return C_CONTINUE; @@ -318,14 +334,15 @@ static STATUS_T CmdRuler( wAction_t action, coOrd pos ) STATUS_T ModifyRuler( - wAction_t action, - coOrd pos ) + wAction_t action, + coOrd pos ) { switch (action&0xFF) { case C_DOWN: Dr.modifyingEnd = -1; - if ( Dr.state != DR_ON ) + if ( Dr.state != DR_ON ) { return C_ERROR; + } if ( IsClose(FindDistance( pos, Dr.pos0 ))) { Dr.modifyingEnd = 0; } else if ( IsClose(FindDistance( pos, Dr.pos1 ))) { @@ -339,17 +356,18 @@ STATUS_T ModifyRuler( Dr.pos0 = pos; } else if ( Dr.modifyingEnd == 1) { Dr.pos1 = pos; - } else return C_ERROR; + } else { return C_ERROR; } InfoMessage( "%s", FormatDistance( FindDistance( Dr.pos0, Dr.pos1 ) ) ); return C_CONTINUE; case C_UP: return C_CONTINUE; case C_REDRAW: - DrawRuler( &tempD, Dr.pos0, Dr.pos1, 0.0, TRUE, TRUE, Dr.isClose?wDrawColorBlue:wDrawColorBlack ); + DrawRuler( &tempD, Dr.pos0, Dr.pos1, 0.0, TRUE, TRUE, + Dr.isClose?wDrawColorBlue:wDrawColorBlack ); break; case wActionMove: if ( IsClose(FindDistance( pos, Dr.pos0 )) || - IsClose(FindDistance( pos, Dr.pos1 ))) { + IsClose(FindDistance( pos, Dr.pos1 ))) { Dr.isClose = TRUE; An.isClose = FALSE; } else { @@ -364,13 +382,17 @@ STATUS_T ModifyRuler( } -#include "bitmaps/ruler.xpm" -#include "bitmaps/protractor.xpm" +#include "bitmaps/ruler.xpm3" +#include "bitmaps/protractor.xpm3" void InitCmdRuler( wMenu_p menu ) { ButtonGroupBegin( _("Measurement"), "cmdMeasureSetCmd", _("Measurement") ); - AddMenuButton( menu, CmdRuler, "cmdRuler", _("Ruler"), wIconCreatePixMap(ruler_xpm[iconSize]), LEVEL0, IC_STICKY|IC_POPUP|IC_NORESTART, ACCL_RULER, NULL ); - AddMenuButton( menu, CmdAngle, "cmdAngle", _("Protractor"), wIconCreatePixMap(protractor_xpm[iconSize]), LEVEL0, IC_STICKY|IC_POPUP|IC_NORESTART, ACCL_ANGLE, NULL ); + AddMenuButton( menu, CmdRuler, "cmdRuler", _("Ruler"), + wIconCreatePixMap(ruler_xpm3[iconSize]), LEVEL0, + IC_STICKY|IC_POPUP|IC_NORESTART, ACCL_RULER, NULL ); + AddMenuButton( menu, CmdAngle, "cmdAngle", _("Protractor"), + wIconCreatePixMap(protractor_xpm3[iconSize]), LEVEL0, + IC_STICKY|IC_POPUP|IC_NORESTART, ACCL_ANGLE, NULL ); ButtonGroupEnd(); } -- cgit v1.2.3