diff options
Diffstat (limited to 'app/bin/compound.h')
-rw-r--r-- | app/bin/compound.h | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/app/bin/compound.h b/app/bin/compound.h new file mode 100644 index 0000000..a0de926 --- /dev/null +++ b/app/bin/compound.h @@ -0,0 +1,170 @@ +/* $Header: /home/dmarkle/xtrkcad-fork-cvs/xtrkcad/app/bin/compound.h,v 1.1 2005-12-07 15:47:08 rc-flyer 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 COMPOUND_H +#define COMPOUND_H + +typedef enum { TOnormal, TOadjustable, TOpierInfo, TOpier, TOcarDesc, TOlast } TOspecial_e; + +typedef struct { + char * name; + FLOAT_T height; + } pierInfo_t; +typedef union { + struct { + FLOAT_T minD, maxD; + } adjustable; + struct { + int cnt; + pierInfo_t * info; + } pierInfo; + struct { + FLOAT_T height; + char * name; + } pier; + } turnoutInfo_u; + +typedef struct turnoutInfo_t{ + SCALEINX_T scaleInx; + char * title; + coOrd orig; + coOrd size; + wIndex_t segCnt; + trkSeg_p segs; + wIndex_t endCnt; + trkEndPt_t * endPt; + wIndex_t pathLen; + PATHPTR_T paths; + int paramFileIndex; + char * customInfo; + DIST_T barScale; + TOspecial_e special; + turnoutInfo_u u; + char * contentsLabel; + } turnoutInfo_t; + + +#define xpaths(X) \ + (X->paths) +#define xtitle(X) \ + (X->title) + +#ifndef PRIVATE_EXTRADATA +struct extraData { + coOrd orig; + ANGLE_T angle; + BOOL_T handlaid; + BOOL_T flipped; + BOOL_T ungrouped; + BOOL_T split; + coOrd descriptionOrig; + coOrd descriptionOff; + coOrd descriptionSize; + char * title; + char * customInfo; + TOspecial_e special; + turnoutInfo_u u; + PATHPTR_T paths; + wIndex_t pathLen; + PATHPTR_T pathCurr; + wIndex_t segCnt; + trkSeg_t * segs; + }; +#endif + +extern TRKTYP_T T_TURNOUT; +extern TRKTYP_T T_STRUCTURE; +extern DIST_T curBarScale; +extern dynArr_t turnoutInfo_da; +extern dynArr_t structureInfo_da; +extern dynArr_t carDescInfo_da; +#define turnoutInfo(N) DYNARR_N( turnoutInfo_t *, turnoutInfo_da, N ) +#define structureInfo(N) DYNARR_N( turnoutInfo_t *, structureInfo_da, N ) +extern turnoutInfo_t * curTurnout; +extern turnoutInfo_t * curStructure; + + +#define ADJUSTABLE "adjustable" +#define PIER "pier" + +/* compound.c */ +#define FIND_TURNOUT (1<<11) +#define FIND_STRUCT (1<<12) +void FormatCompoundTitle( long, char *); +BOOL_T WriteCompoundPathsEndPtsSegs( FILE *, PATHPTR_T, wIndex_t, trkSeg_p, EPINX_T, trkEndPt_t *); +void ParseCompoundTitle( char *, char **, int *, char **, int *, char **, int * ); +void FormatCompoundTitle( long, char *); +void ComputeCompoundBoundingBox( track_p); +turnoutInfo_t * FindCompound( long, char *, char * ); +char * CompoundGetTitle( turnoutInfo_t * ); +void CompoundListLoadData( wList_p, turnoutInfo_t *, long ); +void CompoundClearDemoDefns( void ); +void SetDescriptionOrig( track_p ); +void DrawCompoundDescription( track_p, drawCmd_p, wDrawColor ); +DIST_T DistanceCompound( track_p, coOrd * ); +void DescribeCompound( track_p, char *, CSIZE_T ); +void DeleteCompound( track_p ); +track_p NewCompound( TRKTYP_T, TRKINX_T, coOrd, ANGLE_T, char *, EPINX_T, trkEndPt_t *, int, char *, wIndex_t, trkSeg_p ); +BOOL_T WriteCompound( track_p, FILE * ); +void ReadCompound( char *, TRKTYP_T ); +void MoveCompound( track_p, coOrd ); +void RotateCompound( track_p, coOrd, ANGLE_T ); +void RescaleCompound( track_p, FLOAT_T ); +void FlipCompound( track_p, coOrd, ANGLE_T ); +BOOL_T EnumerateCompound( track_p ); + +/* cgroup.c */ +void UngroupCompound( track_p ); +void DoUngroup( void ); +void DoGroup( void ); + +/* dcmpnd.c */ +void UpdateTitleMark( char *, SCALEINX_T ); +void DoUpdateTitles( void ); +BOOL_T RefreshCompound( track_p, BOOL_T ); + +/* cturnout.c */ +EPINX_T TurnoutPickEndPt( coOrd p, track_p ); +void GetSegInxEP( signed char, int *, EPINX_T * ); +wIndex_t CheckPaths( wIndex_t, trkSeg_p, PATHPTR_T ); +turnoutInfo_t * CreateNewTurnout( char *, char *, wIndex_t, trkSeg_p, wIndex_t, PATHPTR_T, EPINX_T, trkEndPt_t *, wBool_t ); +turnoutInfo_t * TurnoutAdd( long, SCALEINX_T, wList_p, coOrd *, EPINX_T ); +STATUS_T CmdTurnoutAction( wAction_t, coOrd ); +BOOL_T ConnectAdjustableTracks( track_p trk1, EPINX_T ep1, track_p trk2, EPINX_T ep2 ); +track_p NewHandLaidTurnout( coOrd, ANGLE_T, coOrd, ANGLE_T, coOrd, ANGLE_T, ANGLE_T ); +void NextTurnoutPosition( track_p trk ); + +/* ctodesgn.c */ +void EditCustomTurnout( turnoutInfo_t *, turnoutInfo_t * ); +long ComputeTurnoutRoadbedSide( trkSeg_p, int, int, ANGLE_T, DIST_T ); + +/* cstruct.c */ +turnoutInfo_t * CreateNewStructure( char *, char *, wIndex_t, trkSeg_p, BOOL_T ); +turnoutInfo_t * StructAdd( long, SCALEINX_T, wList_p, coOrd * ); +STATUS_T CmdStructureAction( wAction_t, coOrd ); +BOOL_T StructLoadCarDescList( wList_p ); + +/* cstrdsgn.c */ +void EditCustomStructure( turnoutInfo_t * ); + +STATUS_T CmdCarDescAction( wAction_t, coOrd ); +BOOL_T CarCustomSave( FILE * ); + +#endif |