diff options
Diffstat (limited to 'app/bin/misc.h')
-rw-r--r-- | app/bin/misc.h | 392 |
1 files changed, 392 insertions, 0 deletions
diff --git a/app/bin/misc.h b/app/bin/misc.h new file mode 100644 index 0000000..22e8f5a --- /dev/null +++ b/app/bin/misc.h @@ -0,0 +1,392 @@ +/* + * $Header: /home/dmarkle/xtrkcad-fork-cvs/xtrkcad/app/bin/misc.h,v 1.8 2009-09-05 16:40:53 m_fischer Exp $ + */ + +/* XTrkCad - Model Railroad CAD + * Copyright (C) 2005 Dave Bullis + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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. + */ + +#ifndef MISC_H +#define MISC_H + +#define EXPORT + +#include "acclkeys.h" + +typedef void (*addButtonCallBack_t)(void*); + +#include "custom.h" + +#ifdef WINDOWS +#define FILE_SEP_CHAR "\\" +/* suppress warning from *.bmp about conversion of int to char */ +#pragma warning( disable : 4305) +#else +#define FILE_SEP_CHAR "/" +#endif + +#define COUNT(A) (sizeof(A)/sizeof(A[0])) + +#define STR_SIZE (256) +#define STR_SHORT_SIZE (80) +#define STR_LONG_SIZE (1024) + +#define CAST_AWAY_CONST (char*) + +#define TITLEMAXLEN (40) + +/* + * Globals + */ + +extern long adjTimer; + +typedef int SCALEINX_T; +typedef int GAUGEINX_T; +typedef int SCALEDESCINX_T; + +extern int log_error; + +extern long toolbarSet; +extern ANGLE_T turntableAngle; +extern long maxCouplingSpeed; +extern long hideSelectionWindow; +extern long labelWhen; +extern long labelScale; +extern long labelEnable; +extern long colorLayers; +extern long carHotbarModeInx; +extern DIST_T minLength; +extern DIST_T connectDistance; +extern ANGLE_T connectAngle; +extern long twoRailScale; +extern long mapScale; +extern char Title1[40]; +extern char Title2[40]; +extern long checkPtInterval; +extern long liveMap; +extern long preSelect; +extern long hideTrainsInTunnels; +extern long listLabels; +extern long layoutLabels; +extern long descriptionFontSize; +extern long units; +extern long onStartup; +extern long angleSystem; +extern SCALEINX_T curScaleInx; +extern GAUGEINX_T curGaugeInx; +extern SCALEDESCINX_T curScaleDescInx; +extern DIST_T trackGauge; +extern DIST_T curScaleRatio; +extern char * curScaleName; +extern int enumerateMaxDescLen; +extern long enableBalloonHelp; +extern long hotBarLabels; +extern long rightClickMode; +extern void * commandContext; +extern coOrd cmdMenuPos; +#define MODE_DESIGN (0) +#define MODE_TRAIN (1) +extern long programMode; +#define DISTFMT_DECS 0x00FF +#define DISTFMT_FMT 0x0300 +#define DISTFMT_FMT_NONE 0x0000 +#define DISTFMT_FMT_SHRT 0x0100 +#define DISTFMT_FMT_LONG 0x0200 +#define DISTFMT_FMT_MM 0x0100 +#define DISTFMT_FMT_CM 0x0200 +#define DISTFMT_FMT_M 0x0300 +#define DISTFMT_FRACT 0x0400 +#define DISTFMT_FRACT_NUM 0x0000 +#define DISTFMT_FRACT_FRC 0x0400 + +#define UNITS_ENGLISH (0) +#define UNITS_METRIC (1) +#define GetDim(X) ((units==UNITS_METRIC)?(X)/2.54:(X)) +#define PutDim(X) ((units==UNITS_METRIC)?(X)*2.54:(X)) +#define ANGLE_POLAR (0) +#define ANGLE_CART (1) +#define GetAngle(X) ((angleSystem==ANGLE_POLAR)?(X):NormalizeAngle(90.0-(X))) +#define PutAngle(X) ((angleSystem==ANGLE_POLAR)?(X):NormalizeAngle(90.0-(X))) +#define LABELENABLE_TRKDESC (1<<0) +#define LABELENABLE_LENGTHS (1<<1) +#define LABELENABLE_ENDPT_ELEV (1<<2) +#define LABELENABLE_TRACK_ELEV (1<<3) +#define LABELENABLE_CARS (1<<4) + +/* + * Command Action + */ +#define C_DOWN wActionLDown +#define C_MOVE wActionLDrag +#define C_UP wActionLUp +#define C_RDOWN wActionRDown +#define C_RMOVE wActionRDrag +#define C_RUP wActionRUp +#define C_TEXT wActionText +#define C_WUP wActionWheelUp +#define C_WDOWN wActionWheelDown +#define C_INIT (wActionLast+1) +#define C_START (wActionLast+2) +#define C_REDRAW (wActionLast+3) +#define C_CANCEL (wActionLast+4) +#define C_OK (wActionLast+5) +#define C_CONFIRM (wActionLast+6) +#define C_LCLICK (wActionLast+7) +#define C_RCLICK (wActionLast+8) +#define C_CMDMENU (wActionLast+9) +#define C_FINISH (wActionLast+10) + +#define C_CONTINUE (100) +#define C_TERMINATE (101) +#define C_INFO (102) +#define C_ERROR (103) + +/* + * Commands + */ +#define LEVEL0 (0) +#define LEVEL0_50 (1) +#define LEVEL1 (2) +#define LEVEL2 (3) + +typedef STATUS_T (*procCommand_t) (wAction_t, coOrd); + +/* + * Windows and buttons + */ +extern wPos_t DlgSepLeft; +extern wPos_t DlgSepMid; +extern wPos_t DlgSepRight; +extern wPos_t DlgSepTop; +extern wPos_t DlgSepBottom; +extern wPos_t DlgSepNarrow; +extern wPos_t DlgSepWide; +extern wPos_t DlgSepFrmLeft; +extern wPos_t DlgSepFrmRight; +extern wPos_t DlgSepFrmTop; +extern wPos_t DlgSepFrmBottom; + +extern wWin_p mainW; +extern wPos_t toolbarHeight; +extern wIndex_t changed; +extern char FAR message[STR_LONG_SIZE]; +extern REGION_T curRegion; +extern long paramVersion; +extern coOrd zero; +extern wBool_t extraButtons; +extern wButton_p undoB; +extern wButton_p redoB; +extern wButton_p zoomUpB; /** ZoomUp button on toolbar */ +extern wButton_p zoomDownB; /** ZoomDown button on toolbar */ +// extern wButton_p easementB; +extern wIndex_t checkPtMark; +extern wMenu_p demoM; +extern wMenu_p popup1M, popup2M; + +#define wControlBelow( B ) (wControlGetPosY((wControl_p)(B))+wControlGetHeight((wControl_p)(B))) +#define wControlBeside( B ) (wControlGetPosX((wControl_p)(B))+wControlGetWidth((wControl_p)(B))) + +typedef void (*rotateDialogCallBack_t) ( void * ); +extern void AddRotateMenu( wMenu_p, rotateDialogCallBack_t ); +extern void StartRotateDialog( rotateDialogCallBack_t ); +/* + * Safe Memory etc + */ +void * MyMalloc( long ); +void * MyRealloc( void *, long ); +void MyFree( void * ); +void * memdup( void *, size_t ); +char * MyStrdup( const char * ); +void AbortProg( char *, ... ); +#define ASSERT( X ) if ( !(X) ) AbortProg( "%s: %s:%d", #X, __FILE__, __LINE__ ) +char * Strcpytrimed( char *, char *, BOOL_T ); +char * BuildTrimedTitle( char *, char *, char *, char *, char * ); +void ErrorMessage( char *, ... ); +void InfoMessage( char *, ... ); +int NoticeMessage( char *, char*, char *, ... ); +int NoticeMessage2( int, char *, char*, char *, ... ); +void DoQuit( void ); + +void wShow( wWin_p ); +void wHide( wWin_p ); +void CloseDemoWindows( void ); +void DefaultProc( wWin_p, winProcEvent, void * ); +void SelectFont(); + +void CheckRoomSize( BOOL_T ); +const char * GetBalloonHelpStr( char* ); +void EnableCommands( void ); +void Reset( void ); +void ResetIfNotSticky( void ); +wBool_t DoCurCommand( wAction_t, coOrd ); +void ConfirmReset( BOOL_T ); +void LayoutToolBar( void ); +#define IC_STICKY (1<<0) +#define IC_CANCEL (1<<1) +#define IC_MENU (1<<2) +#define IC_NORESTART (1<<3) +#define IC_SELECTED (1<<4) +#define IC_POPUP (1<<5) +#define IC_LCLICK (1<<6) +#define IC_RCLICK (1<<7) +#define IC_CMDMENU (1<<8) +#define IC_POPUP2 (1<<9) +#define IC_ABUT (1<<10) +#define IC_ACCLKEY (1<<11) +#define IC_MODETRAIN_TOO (1<<12) +#define IC_MODETRAIN_ONLY (1<<13) +#define IC_WANT_MOVE (1<<14) +#define IC_PLAYBACK_PUSH (1<<15) +wIndex_t InitCommand( wMenu_p, procCommand_t, char *, char *, int, long, long ); +void AddToolbarControl( wControl_p, long ); +BOOL_T CommandEnabled( wIndex_t ); +wButton_p AddToolbarButton( char*, wIcon_p, long, wButtonCallBack_p, void * context ); +wIndex_t AddCommandButton( procCommand_t, char*, char*, wIcon_p, int, long, long, void* ); +wIndex_t AddMenuButton( wMenu_p, procCommand_t, char*, char*, wIcon_p, int, long, long, void* ); +void PlaybackButtonMouse( wIndex_t ); +void ButtonGroupBegin( char *, char *, char * ); +void ButtonGroupEnd( void ); + +void SaveState( void ); + +void PlaybackCommand( char *, wIndex_t ); +wMenu_p MenuRegister( char * label ); +void DoCommandB( void * ); + +extern void EnumerateTracks( void ); +void InitDebug( char *, long * ); + +#define CHANGE_SCALE (1<<0) +#define CHANGE_PARAMS (1<<1) +#define CHANGE_MAIN (1<<2) +#define CHANGE_MAP (1<<4) +#define CHANGE_GRID (1<<5) +#define CHANGE_UNITS (1<<7) +#define CHANGE_TOOLBAR (1<<8) +#define CHANGE_CMDOPT (1<<9) +#define CHANGE_LIMITS (1<<10) +#define CHANGE_ALL (CHANGE_SCALE|CHANGE_PARAMS|CHANGE_MAIN|CHANGE_MAP|CHANGE_UNITS|CHANGE_TOOLBAR|CHANGE_CMDOPT) +typedef void (*changeNotificationCallBack_t)( long ); +void RegisterChangeNotification( changeNotificationCallBack_t ); +void DoChangeNotification( long ); + +#include "param.h" +#include "misc2.h" +#include "fileio.h" + +/* foreign externs */ +extern drawCmd_t mapD; +extern STATUS_T CmdEnumerate( wAction_t, coOrd ); + +wIndex_t modifyCmdInx; +wIndex_t joinCmdInx; +wIndex_t tunnelCmdInx; + +/* ctodesgn.c */ +void InitNewTurn( wMenu_p m ); + +/* cnote.c */ +void ClearNote( void ); + +/* cruler.c */ +void RulerRedraw( BOOL_T ); +STATUS_T ModifyRuler( wAction_t, coOrd ); + +/* dialogs */ +void OutputBitMap( void ); + +wDrawColor snapGridColor; + +addButtonCallBack_t ColorInit( void ); +addButtonCallBack_t PrefInit( void ); +addButtonCallBack_t LayoutInit( void ); +addButtonCallBack_t DisplayInit( void ); +addButtonCallBack_t CmdoptInit( void ); +addButtonCallBack_t OutputBitMapInit( void ); +addButtonCallBack_t CustomMgrInit( void ); +addButtonCallBack_t PriceListInit( void ); +addButtonCallBack_t ParamFilesInit( void ); + +wIndex_t InitGrid( wMenu_p menu ); + +void SnapPos( coOrd * ); +void DrawSnapGrid( drawCmd_p, coOrd, BOOL_T ); +BOOL_T GridIsVisible( void ); +void InitSnapGridButtons( void ); +void SnapGridEnable( void ); +void SnapGridShow( void ); +wMenuToggle_p snapGridEnableMI; +wMenuToggle_p snapGridShowMI; + +void ScaleLengthEnd( void ); +void EnumerateList( long, FLOAT_T, char * ); +void EnumerateStart(void); +void EnumerateEnd(void); + +/* cnote.c */ +void DoNote( void ); +BOOL_T WriteMainNote( FILE * ); + +/* dbench.c */ +long GetBenchData( long, long ); +wIndex_t GetBenchListIndex( long ); +long SetBenchData( char *, wDrawWidth, wDrawColor ); +void DrawBench( drawCmd_p, coOrd, coOrd, wDrawColor, wDrawColor, long, long ); +void BenchUpdateOrientationList( long, wList_p ); +void BenchUpdateChoiceList( wIndex_t, wList_p, wList_p ); +addButtonCallBack_t InitBenchDialog( void ); +void BenchLoadLists( wList_p, wList_p ); +void BenchGetDesc( long, char * ); +void CountBench( long, DIST_T ); +void TotalBench( void ); +long BenchInputOption( long ); +long BenchOutputOption( long ); +DIST_T BenchGetWidth( long ); + +/* dcustmgm.c */ +FILE * customMgmF; +#define CUSTMGM_DO_COPYTO (1) +#define CUSTMGM_CAN_EDIT (2) +#define CUSTMGM_DO_EDIT (3) +#define CUSTMGM_CAN_DELETE (4) +#define CUSTMGM_DO_DELETE (5) +#define CUSTMGM_GET_TITLE (6) + +typedef int (*custMgmCallBack_p)( int, void * ); +void CustMgmLoad( wIcon_p, custMgmCallBack_p, void * ); +void CompoundCustMgmLoad(); +void CarCustMgmLoad(); +BOOL_T CompoundCustomSave(FILE*); +BOOL_T CarCustomSave(FILE*); + +/* doption.c */ +long GetDistanceFormat( void ); + +/* ctrain.c */ +BOOL_T WriteCars( FILE * ); +void ClearCars( void ); +void CarDlgAddProto( void ); +void CarDlgAddDesc( void ); +void AttachTrains( void ); +#endif + +/* cblock.c */ +void InitCmdBlock( wMenu_p menu ); + +/* cswitchmotor.c */ +void InitCmdSwitchMotor( wMenu_p menu ); |